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 barcomo comando, você pode agrupá-la em uma função interativa personalizada ( foo) da seguinte maneira:
(defun foo ()
(interactive)
(bar))
Obviamente, se houver barum ou mais argumentos, você precisará fornecê-los para que o footrabalho 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 defuns 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).