Puede traducir combinaciones de teclas para usar elisp C-h k clave.
Observará que la función elisp para establecer la marca set-mark-command
, toma un argumento no opcional. Emacs usa la función especial interactive
para permitir que las funciones elisp se escriban naturalmente con argumentos. Esto les permite ser genéricos y fáciles de reutilizar en otros programas elisp, mientras que aún es posible invocar directamente desde una tecla. También tiene algunas de las C-u lógica de prefijo incorporada.
En el caso de set-mark-command
, su primera función es (interactive "P")
, lo que significa que el prefijo se pasa como un argumento cuando se llama desde el teclado. Se puede simular esto directamente en elisp con:
(set-mark-command nil)
Por ejemplo, para seleccionar la línea actual en elisp:
(defun my-select-current-line()
(interactive)
(move-beginning-of-line nil)
(set-mark-command nil)
(move-end-of-line nil)
(setq deactivate-mark nil))
Nota usted tiene que decirle a Emacs que dejar la marca activa al final o de lo contrario la región no permanecerá resaltada (aunque el punto y la marca estarán donde los dejó).
Si configuro el punto al final de una línea y luego ejecuto '(set-mark-command 0)', el punto se mueve pero no la marca, por lo tanto, no se selecciona nada. ¿Qué me estoy perdiendo? Gracias. – vemv
Establezca la marca al comienzo de la región, luego mueva el punto hasta el final. Además, el arg en realidad debería ser 'nil' en lugar de cero. He actualizado mi respuesta con un ejemplo. – ataylor
La funcionalidad funciona (¡gracias!) No recibo comentarios visuales, es decir, 'deactivate-mark' no parece marcar la diferencia. No es importante para mi propósito particular de todos modos. – vemv