tutorial texto source program para how code emacs elisp

texto - emacs source code



.emacs global-set-key y funciĆ³n interactiva de llamada con argumento (4)

Encontré esto cuando tuve el mismo problema, pero terminé resolviéndolo de otra manera.

(global-set-key (kbd "M-<down>") ''move-line) (global-set-key (kbd "M-<up>") (kbd "C-u -1 M-<down>"))

Definitivamente no es una solución perfecta, ya que M-<down> podría ser reasignado y Cu -1 podría no tener sentido, pero como es solo mi archivo de inicio local, no debería haber ningún problema.

Además, esto es obvio que solo funciona bien con los comandos de teclado que desea invertir.

En mi .emacs tengo la siguiente función que transpone una línea

(defun move-line (n) "Move the current line up or down by N lines." (interactive "p") (let ((col (current-column)) start end) (beginning-of-line) (setq start (point)) (end-of-line) (forward-char) (setq end (point)) (let ((line-text (delete-and-extract-region start end))) (forward-line n) (insert line-text) ;; restore point to original column in moved line (forward-line -1) (forward-char col))))

Y le até una llave como esta

(global-set-key (kbd "M-<down>") ''move-line) ;; this is the same as M-x global-set-key <return>

Sin embargo, quiero unir M-up a move-line (-1) Pero parece que no puedo hacerlo correctamente:

;; M-- M-1 M-x global-set-key <return>

¿Cómo defino lo anterior usando global-set-key para llamar a move-line -1?


Es posible que desee revisar la función incorporada "transpose-lines".


No minutos después de hacer la pregunta, lo descubrí copiando y pegando el código. Sin embargo no tengo ni idea de cómo funciona.

(global-set-key (kbd "M-<up>") (lambda () (interactive) (move-line -1)))


global-set-key solo toma 2 argumentos: la secuencia de teclas y el comando que desea enlazar. Asi que

(global-set-key (kbd "M-<down>") ''move-line)

funciona bien. Pero si desea usar la línea de movimiento con un argumento, necesita envolverlo en una función anónima (también conocida como lamba) para que se presente a la clave de conjunto global como un valor.