Come scegliere tra zero e 0 oppure te 1 quando si impostano le variabili o si abilitano le modalità


19

Comprendo che nil, 0e / o -1vengono utilizzati per disabilitare alcune funzionalità e t, 1e / o +1utilizzati per abilitare alcune funzionalità. Quando si assegnano variabili o si abilitano / disabilitano le modalità secondarie, quale devo scegliere?

Ho visto tutte queste variazioni usate in un punto o nell'altro. Mi porta a chiedermi se c'è davvero una differenza tra loro. Ho visto che a volte l'uso 0non funziona per me, mentre lo nilfa. Ci sono differenze rispetto a dove vengono utilizzate?


1
Ho riscritto la domanda per affermare più chiaramente ciò che penso tu stia chiedendo. Sentiti libero di ripristinare la modifica se sbaglio.
nispio,

@nispio Le tue modifiche vanno bene. Grazie mille. :)
greduan,

Risposte:


17

TL; DR

Prima di impostare qualsiasi variabile, è necessario sapere come interpretare tale variabile. Allo stesso modo, prima di chiamare qualsiasi funzione (comprese quelle utilizzate per attivare / disattivare le modalità secondarie), è necessario sapere come vengono interpretati gli argomenti di quella funzione.

Utilizzare C-hfe C-hvper consultare la documentazione per la funzione o la variabile in questione. Dovrebbe specificare i valori previsti.

"Non-zero" significa letteralmente tutto ciò che non lo è nil. Ciò include 0e numeri negativi.


Modalità minori

Facciamo un esempio specifico. Digita C-hfblink-cursor-mode e premi RETper vedere la documentazione della funzione per blink-cursor-mode:

(modalità cursore lampeggiante e ARG opzionale)

Attiva / disattiva il cursore lampeggiante (modalità cursore lampeggiante). Con un argomento prefisso ARG, abilitare la modalità Cursore lampeggiante se ARG è positivo e disabilitarlo altrimenti. Se chiamato da Lisp, abilitare la modalità se ARG è omesso o nullo.

Possiamo abilitare la modalità Cursore lampeggiante in uno dei seguenti modi:

(blink-cursor-mode)           ; Omitted argument
(blink-cursor-mode 1)         ; Positive argument
(blink-cursor-mode t)         ; True argument
(blink-cursor-mode nil)       ; nil argument (don't use this)

Si noti che un argomento di tfunzionerà, anche se la stringa di documenti non l'ha menzionata specificamente. Anche se questo è spesso il caso, la scommessa più sicura è usare ciò che la stringa di documenti ti dice di usare, che in questo caso è un valore positivo.

Inoltre, nota che un argomento di nilfunzionerà. Consiglio vivamente contro nilin questo modo perché rende poco chiara la tua intenzione. Se sfiorassi il tuo codice lisp e vedessi un nilargomento, suppongo che tu voglia disabilitare la modalità minore.

Possiamo anche disabilitare blink-cursor-modenei seguenti modi:

(blink-cursor-mode 0)         ; Non-positive argument
(blink-cursor-mode -1)        ; Negative argument

Notare di nuovo che nonnil è uno dei modi per disabilitare questa modalità minore. Questo è vero per quasi tutte le modalità minori che incontrerai.


variabili

Ora diamo un'occhiata a un esempio di una variabile. Digita C-hvtruncate-linese premi RETper guardare la documentazione per la variabile truncate-lines:

truncate-lines è una variabile definita in "codice sorgente C".

I valori diversi da zero non visualizzano le linee di continuazione. Invece, assegna a ciascuna riga di testo solo una riga dello schermo.

Puoi attivare il troncamento in uno dei seguenti modi:

(setq truncate-lines t)       ; Boolean true value (non-nil)
(setq truncate-lines 1)       ; Positive value (non-nil)
(setq truncate-lines 0)       ; Zero value (non-nil)
(setq truncate-lines -1)      ; Negative value (non-nil)

Potrebbe sorprenderti che il 0e il -1funzionerà. Ancora una volta, consiglierei di non usarli perché rende le tue intenzioni poco chiare.

L'unico modo per disabilitare il troncamento è questo:

(setq truncate-lines nil)     ; nil value

In altre parole è possibile impostare truncate-linesuguale a numeri, lettere, stringhe, liste, o qualsiasi altra cosa che vuoi, a patto che non lo fa valutare da nilesso consentirà troncamento. (Ma dovresti davvero restare con to 1).


Questo ha risposto alla mia domanda. Grazie. :)
greduan,

0

Queste sono tutte cose diverse. 0, 1 e -1 sono numeri diversi; nilè un simbolo.

Ognuno di essi è utilizzato ovunque, per molte cose diverse. Per scoprire a cosa serve ciascuno in un determinato contesto , consultare il documento per quel contesto . Ciò include i contesti di attivazione o disattivazione di diverse modalità, l'abilitazione e la disabilitazione di cose diverse utilizzando le variabili e molti altri contesti.

In sintesi:

  • La tua domanda è troppo ampia per essere utile.
  • È necessario consultare il documento: (a) in generale, per imparare un po 'di Emacs Lisp, e (b) in contesti particolari (ad esempio, il documento per una modalità particolare).

Il documento per una determinata modalità ti dice generalmente come accenderlo e spegnerlo. Se ti dice di usare 1 o -1 o nilo non- nilper qualcosa, questo è ciò che significa. Esistono alcune regole generali per l'attivazione e la disattivazione delle modalità (interattivamente e dal codice Lisp). Ma sembra che tu abbia davvero bisogno di iniziare ottenendo un background generale.

Consulta il documento Emacs per sapere come chiedere aiuto e altre informazioni da Emacs stesso : come controllare il valore di una variabile, come vedere il documento di una variabile o una funzione (inclusa una funzione che attiva / disattiva una modalità) , e così via.

Puoi iniziare usando C-h C-h ( Ctrl-h Ctrl-h), per conoscere il sistema di aiuto di Emacs. E costruisci da lì.

C-h rti inserisce nel manuale di Emacs. Prova il tutorial di Emacs: C-h t. E controlla la pagina dei principianti di Emacs Wiki e la pagina su LearningEmacs .

Per iniziare a conoscere Emacs Lisp:, C-h iquindi selezionare il manuale denominato Emacs Lisp Introe iniziare a leggere. E controlla la pagina Wiki di Emacs su Learning Emacs Lisp .


1
Grazie per la tua risposta. :) Immagino stavo chiedendo in quali contesti sono utilizzati. Avrei dovuto renderlo più chiaro. Grazie. :) Sono consapevole delle principali differenze tra i simboli, come in che modo nill'equivalente logico di falso e tdi vero e il resto sono solo numeri. Ma non ero sicuro di quali contesti fossero abitualmente utilizzati.
greduan,

Guarda cosa ho scritto sulle informazioni generali sulle modalità (collegato al manuale). Nonostante tali informazioni generali, dovresti sempre iniziare controllando il documento per la modalità particolare che ti interessa. Ti dirà cosa usare per attivarlo o disattivarlo. In caso contrario, si applica il comportamento generale descritto nel manuale, ma inizia con la modalità doc specifica . Il punto non sono le differenze tra quelle cose in sé e per sé. Il punto sono le differenze nel modo in cui vengono utilizzati in contesti particolari. Per questo, inizia chiedendo il contesto.
Ha

1
OK. Grazie mille. :) Fantastico che Emacs abbia il suo sito SE eh?
greduan,

1
PS Non ti preoccupare. Sono sicuro che altri spargeranno i fagioli qui su alcune delle regole generali . ;-) Preferisco (a) farti consultare il documento su questo, perché è stato scritto proprio con questo apprendimento in mente, e (b) farti iniziare chiedendo sempre la modalità particolare su se stesso. Le regole generali non superano i dettagli della modalità, e se si ignora quest'ultima, mancheranno cose.
Disegnò il

Ciò che sarà bello sarà quando SE avrà la sua modalità Emacs. ;-)
Ha
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.