¿Cómo puedo escribir un comando emacs que inserte un texto con una cadena variable en la posición actual del cursor?

12

Me gustaría escribir un comando elisp emacs que inserte una cadena fija que contenga una parte variable en la posición actual del cursor:

\label{$STRING} \index{\nameref{$STRING}}

donde el comando debe consultar $STRINGe insertar todo el texto.

Fluir
fuente

Respuestas:

12

Elisp

Aquí hay una función simple de elisp para ello:

(defun labelnameref (string)
  "Insert \label{ARG} \index{\nameref{ARG}} at point"
  (interactive "sString for \\label and \\nameref: ")
  (insert "\\label{" string "} \\index{\\nameref{" string "}}"))

Esta función consulta en el minibúfer la cadena y luego la inserta en el punto. Para usarlo, puede ponerlo en su .emacs y luego invocarlo M-x labelnamerefo vincularlo a una tecla.

Yipnippet

Si desea utilizar muchas construcciones similares, podría ser más fácil escribirlas como yasnippets. Con YASnippet puede crear fácilmente un fragmento con un comportamiento similar al anterior. Por ejemplo, puede usar lo siguiente (debe reemplazar "combinación de teclas" con una combinación de teclas adecuada si desea una combinación de teclas):

# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}

Con esto se escribe foo y presione Tabdirectamente después ampliarlo a \label{$1} \index{\nameref{$1}}y consulta para $1.

NN
fuente