Como posso escrever um comando do emacs que insere um texto com uma string variável na posição atual do cursor?

10

Eu gostaria de escrever um comando elisp emacs que insira uma string fixa que contenha uma parte variável na posição atual do cursor:

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

em que o comando deve consultar $STRING e inserir todo o texto.

    
por Flow 13.02.2012 / 12:48

1 resposta

11

Elisp

Aqui está uma função elisp simples para isso:

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

Esta função consulta no minibuffer a string e depois a insere no ponto. Para usá-lo, você pode colocá-lo em seus .emacs e invocá-lo via M-x labelnameref ou vinculá-lo a uma chave.

YASnippet

Se você quiser usar muitas construções similares, pode ser mais fácil escrevê-las como yasnippets. Com o YASnippet , você pode criar facilmente um snippet com comportamento semelhante ao descrito acima. Por exemplo, você pode usar o seguinte (você tem que substituir "atalhos de teclado" por uma atadura de teclado apropriada se você quiser um atalho de teclado para ele):

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

Com isso você escreve foo e pressiona Tab diretamente para expandi-lo para \label{$1} \index{\nameref{$1}} e consultar $1 .

    
por 13.02.2012 / 12:59

Tags