- M-x è destinato al comando
execute-extended-command
, che consente di digitare il nome di un comando e lo esegue.
- M-: è destinato al comando
eval-expression
, che consente di digitare un arbitrario S-espressione contenente funzione chiamate e lo valuta.
funzioni, che è possibile chiamare tramite M-:, vengono utilizzati per implementare le caratteristiche di Emacs, le personalizzazioni (come ad esempio nel vostro .emacs
), e plugin. Gli argomenti delle funzioni vengono normalmente passati chiamando la funzione in un'espressione S.
Qualsiasi funzione può anche essere un comando se ha un modulo interactive
nella sua definizione. Il modulo interactive
descrive come la funzione dovrebbe ottenere i suoi argomenti quando viene chiamata come comando. Ad esempio, se la funzione ha (interactive "bGive me a buffer: ")
nella sua definizione, la funzione sarà chiamabile con M-x. Quando l'utente chiama la funzione con M-x, Emacs richiederà all'utente un nome di buffer (a causa dello b
) e il nome che digitano verrà passato come argomento alla funzione.
Il punto in cui si esegue un comando di una funzione è rendere semplice la chiamata agli utenti finali, non solo per i programmatori Emacs Lisp. I comandi (eseguito con M-x) sono più facili da eseguire in modo interattivo in questi modi:
- Non è necessario circondare il nome del comando con
()
per renderlo un S-espressione valida.
- Gli argomenti possono essere passati automaticamente (come la posizione del cursore), oppure è possibile richiederli in modo da non dover ricordare quali argomenti sono necessari.
- Quando viene richiesto un argomento, è possibile completarlo automaticamente, poiché lo code characters del modulo (ad esempio
b
) specifica quale tipo di input attendersi.
La ragione per cui non si può chiamare la funzione set-face-attribute
con M-x è che la sua definizione non contiene una forma interactive
, e così set-face-attribute
non è un comando. Devi chiamarlo come una funzione semplice, nelle espressioni S. Puoi farlo dal minibuffer con M-: o da altri luoghi con uno qualsiasi degli altri ways of evaluating code.
Emacs Mini Manual → Concepts → Command ha una breve spiegazione diversamente formulazione della differenza tra le funzioni e comandi normali. Relationship between Emacs functions and commands spiega alcuni dettagli non in questa risposta.
fonte
2015-03-22 21:01:51
Questa domanda è stata ampliata dalla domanda [DavidS] (http://stackoverflow.com/users/201891/davids) in [questo commento] (http://stackoverflow.com/questions/294664/how-to -set-la-font-size-in-emacs # comment46074287_296316). –