Como definir novos comandos no emacs

2

Eu continuo esquecendo a terminologia do emacs para Select All, então eu gostaria de adicionar um novo comando emacs para que eu possa digitar M-x select-all RET e fazer com que ele execute mark-whole-buffer.

Eu tentei adicionar isso ao meu arquivo .emacs:

(defun selecionar-all () (mark-whole-buffer))

ou isto:

(defun select-all () (interativo) (mark-whole-buffer))

Mas estes não parecem colocar os nomes no "namespace" correto para serem acessados via M-x, como eu os coloco no namespace correto?

Obrigado -Shawn

    
por sligocki 29.09.2010 / 23:17

3 respostas

10

(interactive) informa ao Emacs que a função é um comando, ou seja, que a função pode ser ligada a uma chave e executada com M-x . Então (defun select-all () (interactive) (mark-whole-buffer)) deve funcionar (mas (defun select-all () (mark-whole-buffer)) não). Você reiniciou o Emacs ou avaliou a definição com C-M-x ( eval-defun )? O que C-h f select-all RET mostra? (O buffer de ajuda deve começar com "select-all é um interativo".)

Aqui, uma alternativa mais simples é

(defalias 'select-all 'mark-whole-buffer)
    
por 29.09.2010 / 23:51
6

Bem, isso já está embutido em:

M-x mark-whole-buffer

ligado a

C-x h

Mas, para conseguir o que você quer, escrevendo algo, sua segunda implementação funciona muito bem para mim, e eu posso obtê-la digitando M-x .

    
por 29.09.2010 / 23:39
2

Aquele com o interativo parece estar correto, e funciona para mim ... você se lembrou de recarregar seus .emacs depois de defini-lo?

    
por 29.09.2010 / 23:52

Tags