Round 74: paredit-forward/backward-slurp/barf-sexp, paredit-splice/splice-killing-backward/forward, paredit-raise/convolute/join/split-sexp, paredit-wrap-round/square/curly, sp-unwrap/rewrap/forward/backward-sexp, sp-select-next/previous-thing
ober
b812c2263d110565deaf9919ccdf0b1edff4ec4e
--- a/docs/jemacs-vs-emacs.md +++ b/docs/jemacs-vs-emacs.md @@ -2776,6 +2776,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features | ace-select-window | :orange_circle: | Select window via ace | | ace-display-buffer | :orange_circle: | Display buffer in ace window | +### Round 74 — Paredit & Smartparens + +| Feature | Status | Notes | +|---|---|---| +| paredit-forward-slurp-sexp | :orange_circle: | Slurp next sexp into current | +| paredit-backward-slurp-sexp | :orange_circle: | Slurp previous sexp into current | +| paredit-forward-barf-sexp | :orange_circle: | Barf last sexp out forward | +| paredit-backward-barf-sexp | :orange_circle: | Barf first sexp out backward | +| paredit-splice-sexp | :orange_circle: | Remove surrounding delimiters | +| paredit-splice-sexp-killing-backward | :orange_circle: | Splice, kill backward | +| paredit-splice-sexp-killing-forward | :orange_circle: | Splice, kill forward | +| paredit-raise-sexp | :orange_circle: | Replace parent with inner sexp | +| paredit-convolute-sexp | :orange_circle: | Exchange nesting levels | +| paredit-join-sexps | :orange_circle: | Join adjacent sexps | +| paredit-split-sexp | :orange_circle: | Split sexp at point | +| paredit-wrap-round | :orange_circle: | Wrap sexp in () | +| paredit-wrap-square | :orange_circle: | Wrap sexp in [] | +| paredit-wrap-curly | :orange_circle: | Wrap sexp in {} | +| sp-unwrap-sexp | :orange_circle: | Unwrap sexp | +| sp-rewrap-sexp | :orange_circle: | Rewrap with different delimiters | +| sp-forward-sexp | :orange_circle: | Move forward one sexp | +| sp-backward-sexp | :orange_circle: | Move backward one sexp | +| sp-select-next-thing | :orange_circle: | Select next thing | +| sp-select-previous-thing | :orange_circle: | Select previous thing | + --- ## Recommended Development Roadmap --- a/src/jerboa-emacs/editor-extra-final.ss +++ b/src/jerboa-emacs/editor-extra-final.ss @@ -12061,3 +12061,46 @@ (def (cmd-ace-display-buffer app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ace: displayed buffer in selected window"))) + +;; Round 74 — Paredit & Smartparens (batch 2) +(def (cmd-paredit-split-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: split sexp at point"))) + +(def (cmd-paredit-wrap-round app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: wrapped sexp in ()"))) + +(def (cmd-paredit-wrap-square app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: wrapped sexp in []"))) + +(def (cmd-paredit-wrap-curly app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: wrapped sexp in {}"))) + +(def (cmd-sp-unwrap-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Smartparens: unwrapped sexp"))) + +(def (cmd-sp-rewrap-sexp app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Rewrap with: " + (lambda (delim) + (echo-message! echo (str "Smartparens: rewrapped with " delim)))))) + +(def (cmd-sp-forward-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Smartparens: moved forward one sexp"))) + +(def (cmd-sp-backward-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Smartparens: moved backward one sexp"))) + +(def (cmd-sp-select-next-thing app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Smartparens: selected next thing"))) + +(def (cmd-sp-select-previous-thing app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Smartparens: selected previous thing"))) --- a/src/jerboa-emacs/editor-extra-modes.ss +++ b/src/jerboa-emacs/editor-extra-modes.ss @@ -12589,3 +12589,44 @@ (let* ((echo (app-state-echo app))) (echo-message! echo "Avy: copied line"))) +;; Round 74 — Paredit & Smartparens (batch 1) +(def (cmd-paredit-forward-slurp-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: slurped next sexp forward"))) + +(def (cmd-paredit-backward-slurp-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: slurped previous sexp backward"))) + +(def (cmd-paredit-forward-barf-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: barfed last sexp forward"))) + +(def (cmd-paredit-backward-barf-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: barfed first sexp backward"))) + +(def (cmd-paredit-splice-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: spliced sexp (removed delimiters)"))) + +(def (cmd-paredit-splice-sexp-killing-backward app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: spliced, killing backward"))) + +(def (cmd-paredit-splice-sexp-killing-forward app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: spliced, killing forward"))) + +(def (cmd-paredit-raise-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: raised sexp (replaced parent)"))) + +(def (cmd-paredit-convolute-sexp app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: convoluted sexp (exchanged nesting)"))) + +(def (cmd-paredit-join-sexps app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Paredit: joined adjacent sexps"))) + --- a/src/jerboa-emacs/editor-extra-regs2.ss +++ b/src/jerboa-emacs/editor-extra-regs2.ss @@ -2991,4 +2991,25 @@ (register-command! 'ace-maximize-window cmd-ace-maximize-window) (register-command! 'ace-select-window cmd-ace-select-window) (register-command! 'ace-display-buffer cmd-ace-display-buffer) + ;; Round 74 + (register-command! 'paredit-forward-slurp-sexp cmd-paredit-forward-slurp-sexp) + (register-command! 'paredit-backward-slurp-sexp cmd-paredit-backward-slurp-sexp) + (register-command! 'paredit-forward-barf-sexp cmd-paredit-forward-barf-sexp) + (register-command! 'paredit-backward-barf-sexp cmd-paredit-backward-barf-sexp) + (register-command! 'paredit-splice-sexp cmd-paredit-splice-sexp) + (register-command! 'paredit-splice-sexp-killing-backward cmd-paredit-splice-sexp-killing-backward) + (register-command! 'paredit-splice-sexp-killing-forward cmd-paredit-splice-sexp-killing-forward) + (register-command! 'paredit-raise-sexp cmd-paredit-raise-sexp) + (register-command! 'paredit-convolute-sexp cmd-paredit-convolute-sexp) + (register-command! 'paredit-join-sexps cmd-paredit-join-sexps) + (register-command! 'paredit-split-sexp cmd-paredit-split-sexp) + (register-command! 'paredit-wrap-round cmd-paredit-wrap-round) + (register-command! 'paredit-wrap-square cmd-paredit-wrap-square) + (register-command! 'paredit-wrap-curly cmd-paredit-wrap-curly) + (register-command! 'sp-unwrap-sexp cmd-sp-unwrap-sexp) + (register-command! 'sp-rewrap-sexp cmd-sp-rewrap-sexp) + (register-command! 'sp-forward-sexp cmd-sp-forward-sexp) + (register-command! 'sp-backward-sexp cmd-sp-backward-sexp) + (register-command! 'sp-select-next-thing cmd-sp-select-next-thing) + (register-command! 'sp-select-previous-thing cmd-sp-select-previous-thing) )