Todo comando é uma função, mas nem toda função também é um comando. 1 1
Um comando inclui uma chamada para interactive
; é por isso que os comandos são comumente referidos como "funções interativas". Os comandos podem ser chamados via M-x name-of-command
RETe também podem ser associados a uma sequência de teclas. As funções regulares não incluem uma chamada para interactive
, não podem ser chamadas usando M-xe você não pode vinculá-las a uma sequência de teclas. Para executar uma função que não é interativa, pressione M-:( eval-expression
), digite o nome da função seguido por valores para qualquer argumento que ele precise entre parênteses e pressione RET:
M-: (name-of-function arg1 arg2 arg3)
RET
Se a função não deve operar no buffer atual, você também pode inserir
(name-of-function arg1 arg2 arg3)
no *scratch*
buffer e pressione C-x C-e( eval-last-sexp
) com o ponto posicionado após o parêntese de fechamento.
Para disponibilizar uma função bar
como comando, você pode agrupá-la em uma função interativa personalizada ( foo
) da seguinte maneira:
(defun foo ()
(interactive)
(bar))
Obviamente, se houver bar
um ou mais argumentos, você precisará fornecê-los para que o foo
trabalho funcione corretamente.
Se você vir pessoas usando os termos "função" e "comando" de forma intercambiável, isso pode indicar (dependendo do contexto) que eles não estão cientes das diferenças entre os conceitos subjacentes.
1 Observe que estou falando de defun
s aqui. Como o @Stefan aponta nos comentários, as macros do teclado são um caso especial: elas podem ser consideradas comandos , mas não são funções.
C-h i
, escolha o manual Elisp ,i command
- coloca você no nóWhat is a function?
, o que torna tudo isso claro. Ajude os usuários a aprender a perguntar ao Emacs. (Apenas uma opinião).