(Emacs/config|core|elisp)+move.el
Library to move words forward and backward as well as lines up and down. These movements keep the object in question under the cursor which provides a nice experience.
This commit is contained in:
@@ -190,26 +190,11 @@ any buffers in ~+oreo/keep-buffer~ and kills the rest.
|
||||
(kill-buffer buf)))
|
||||
(buffer-list)))
|
||||
#+end_src
|
||||
** Move line {up/down}
|
||||
Shamelessly copied from
|
||||
[[https://emacsredux.com/blog/2013/04/02/move-current-line-up-or-down/][this
|
||||
article]]. Will be bound in [[file:core.org::*Some binds in
|
||||
Emacs][core.org]].
|
||||
** Move
|
||||
Allows {hjkl} movement of text objects. Will be bound in
|
||||
[[file:core.org::*Some binds in Emacs][core.org]].
|
||||
#+begin_src emacs-lisp
|
||||
(defun move-line-up ()
|
||||
"Move up the current line."
|
||||
(interactive)
|
||||
(transpose-lines 1)
|
||||
(forward-line -2)
|
||||
(indent-according-to-mode))
|
||||
|
||||
(defun move-line-down ()
|
||||
"Move down the current line."
|
||||
(interactive)
|
||||
(forward-line 1)
|
||||
(transpose-lines 1)
|
||||
(forward-line -1)
|
||||
(indent-according-to-mode))
|
||||
(load-file (concat user-emacs-directory "elisp/move.el"))
|
||||
#+end_src
|
||||
* Aesthetics
|
||||
General look and feel of Emacs (mostly disabling stuff I don't like).
|
||||
|
||||
@@ -119,9 +119,11 @@ Some bindings that I couldn't fit elsewhere easily.
|
||||
("C-x d" #'delete-frame)
|
||||
|
||||
(nmmap
|
||||
:keymaps 'override
|
||||
"C-M-j" #'move-line-down
|
||||
"C-M-k" #'move-line-up)
|
||||
:keymaps '(text-mode-map prog-mode-map)
|
||||
"C-M-h" #'+move/word-backward
|
||||
"C-M-j" #'+move/line-down
|
||||
"C-M-k" #'+move/line-up
|
||||
"C-M-l" #'+move/word-forward)
|
||||
|
||||
(nmmap
|
||||
"C--" #'text-scale-decrease
|
||||
|
||||
85
Emacs/.config/emacs/elisp/move.el
Normal file
85
Emacs/.config/emacs/elisp/move.el
Normal file
@@ -0,0 +1,85 @@
|
||||
;;; move-line.el --- Move current line up or down -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2024 Aryadev Chavali
|
||||
|
||||
;; Author: Aryadev Chavali <aryadev@aryadevchavali.com>
|
||||
;; Keywords:
|
||||
|
||||
;; This is free and unencumbered software released into the public domain.
|
||||
|
||||
;; Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
;; distribute this software, either in source code form or as a compiled
|
||||
;; binary, for any purpose, commercial or non-commercial, and by any
|
||||
;; means.
|
||||
|
||||
;; In jurisdictions that recognize copyright laws, the author or authors
|
||||
;; of this software dedicate any and all copyright interest in the
|
||||
;; software to the public domain. We make this dedication for the benefit
|
||||
;; of the public at large and to the detriment of our heirs and
|
||||
;; successors. We intend this dedication to be an overt act of
|
||||
;; relinquishment in perpetuity of all present and future rights to this
|
||||
;; software under copyright law.
|
||||
|
||||
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
;; IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
;; OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
;; ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
;; OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
;; For more information, please refer to <https://unlicense.org>
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Move the current line up or down. Shamelessly copied from
|
||||
;; https://emacsredux.com/blog/2013/04/02/move-current-line-up-or-down/ so
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defun +move/--normalise-arg (arg)
|
||||
(if (or (null arg) (< arg 1))
|
||||
1
|
||||
arg))
|
||||
|
||||
(defmacro +move/create-move (name description &rest body)
|
||||
`(defun ,name (&optional arg)
|
||||
,description
|
||||
(interactive "P")
|
||||
(let ((arg (+move/--normalise-arg arg)))
|
||||
(while (not (= arg 0))
|
||||
,@body
|
||||
(setq arg (- arg 1))))))
|
||||
|
||||
(+move/create-move
|
||||
+move/line-up
|
||||
"Move the current line up"
|
||||
(transpose-lines 1)
|
||||
(forward-line -2)
|
||||
(indent-according-to-mode))
|
||||
|
||||
(+move/create-move
|
||||
+move/line-down
|
||||
"Move the current line down"
|
||||
(forward-line 1)
|
||||
(transpose-lines 1)
|
||||
(forward-line -1)
|
||||
(indent-according-to-mode))
|
||||
|
||||
(+move/create-move
|
||||
+move/word-forward
|
||||
"Move the current word forward"
|
||||
(forward-word 1)
|
||||
(transpose-words 1)
|
||||
(forward-word -1)
|
||||
(indent-according-to-mode))
|
||||
|
||||
(+move/create-move
|
||||
+move/word-backward
|
||||
"Move the current word backward"
|
||||
(transpose-words 1)
|
||||
(forward-word -2)
|
||||
(indent-according-to-mode))
|
||||
|
||||
(provide 'move)
|
||||
;;; move.el ends here
|
||||
Reference in New Issue
Block a user