diff options
| author | Thomas Voss <mail@thomasvoss.com> | 2024-10-21 12:35:57 +0200 | 
|---|---|---|
| committer | Thomas Voss <mail@thomasvoss.com> | 2024-10-21 12:35:57 +0200 | 
| commit | 01b13d18c60092edd23a4ef118de67c7c01c7c79 (patch) | |
| tree | c05ec55eb075a6ce14a1800bbed927f20b91e526 /.config/emacs | |
| parent | f4f5a1ae06b771526887da7f04e78b8b1bb733cb (diff) | |
emacs: Add more convenience commands
Diffstat (limited to '.config/emacs')
| -rw-r--r-- | .config/emacs/editing.el | 45 | ||||
| -rw-r--r-- | .config/emacs/modules/mm-keybindings.el | 9 | 
2 files changed, 52 insertions, 2 deletions
diff --git a/.config/emacs/editing.el b/.config/emacs/editing.el index 284f6bf..644c7b7 100644 --- a/.config/emacs/editing.el +++ b/.config/emacs/editing.el @@ -174,4 +174,49 @@ contents after point are placed on a new line before point."        (insert string)        (indent-according-to-mode)))) +(defun e/mc/sort-regions (&optional reverse) +  "Sort marked regions. +This command is an exact replica of `mc/sort-regions' except that +calling this command with a prefix argument REVERSE sorts the marked +regions in reverse order." +  (interactive "*P") +  (unless (use-region-p) +    (mc/execute-command-for-all-cursors)) +  (setq mc--strings-to-replace (sort (mc--ordered-region-strings) +                                     (if reverse #'string> #'string<))) +  (mc--replace-region-strings)) + +(defun e/sort-dwim (&optional reverse) +  "Sort regions do-what-i-mean. +When multiple cursors are not being used this command functions just +like `sort-lines' with the start- and end bounds set to the current +region beginning and -end. + +When using multiple cursors this command sorts the regions marked by +each cursor (effectively calling `e/mc/sort-regions'. + +When called with a prefix argument REVERSE, sorting occurs in reverse +order." +  (interactive "*P") +  (if (> 1 (mc/num-cursors)) +      (e/mc/sort-regions reverse) +    (sort-lines reverse (region-beginning) (region-end)))) + +(defun e/yank (&optional arg) +  "Yank text from the kill-ring. +Yank the most recent kill from the kill ring via `yank'.  If called with +prefix argument ARG then interactively yank from the kill ring via +`yank-from-kill-ring'. + +If `consult' is available than this command instead calls +`consult-yank-from-kill-ring' when called with non-nil ARG." +  (declare (interactive-only t)) +  (interactive "*P") +  (cond ((null arg) +         (yank)) +        ((featurep 'consult) +         (call-interactively #'consult-yank-from-kill-ring)) +        (t +         (call-interactively #'yank-from-kill-ring)))) +  (provide 'editing) diff --git a/.config/emacs/modules/mm-keybindings.el b/.config/emacs/modules/mm-keybindings.el index c1dee93..a025a82 100644 --- a/.config/emacs/modules/mm-keybindings.el +++ b/.config/emacs/modules/mm-keybindings.el @@ -89,7 +89,8 @@ the first command is remapped to the second command."    mark-word          e/mark-entire-word    open-line          e/open-line    transpose-chars    e/transpose-previous-chars -  transpose-lines    e/transpose-current-and-next-lines) +  transpose-lines    e/transpose-current-and-next-lines +  yank               e/yank)  (with-eval-after-load 'cc-vars    (setopt c-backspace-function #'backward-delete-char)) @@ -117,12 +118,16 @@ the first command is remapped to the second command."    "C-c d"   #'duplicate-dwim    "C-c t a" #'e/align-regexp    "C-c t f" #'fill-paragraph -  "C-c t s" #'sort-lines) +  "C-c t s" #'e/sort-dwim)  (mm-keymap-set-repeating global-map    "j" #'e/join-current-and-next-line    "J" #'join-line) +(mm-keymap-set-repeating global-map +  "n" #'next-error +  "p" #'previous-error) +  (with-eval-after-load 'increment    (mm-keymap-set-repeating global-map      "d" #'decrement-number-at-point  |