Come posso scrivere un comando emacs che inserisce un testo con una stringa variabile nella posizione corrente del cursore?


12

Vorrei scrivere un comando emis emacs che inserisce una stringa fissa che contiene una parte variabile nella posizione corrente del cursore:

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

dove il comando dovrebbe interrogare $STRINGe inserire l'intero testo.

Risposte:


12

elisp

Ecco una semplice funzione elisp per questo:

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

Questa funzione esegue una query nel minibuffer per la stringa e quindi inserisce tutto nel punto. Per usarlo puoi inserirlo nel tuo .emacs e quindi invocarlo tramite M-x labelnamerefo associarlo a una chiave.

YASnippet

Se vuoi usare molti costrutti simili, potrebbe essere più semplice scriverli come yasnippet. Con YASnippet puoi creare facilmente uno snippet con un comportamento simile a quello sopra. Ad esempio, è possibile utilizzare quanto segue (è necessario sostituire "keybinding" con un keybinding appropriato se si desidera un keybinding per esso):

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

Con questo scrivi pippo e premi Tabsubito dopo per espanderlo \label{$1} \index{\nameref{$1}}e fare una query $1.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.