Rozumiem, że nil
, 0
i / lub -1
służą do wyłączania niektórych funkcji i t
, 1
i / lub +1
są wykorzystywane w celu umożliwienia niektórych funkcji. Które powinienem wybrać przy przypisywaniu zmiennych lub włączaniu / wyłączaniu mniejszych trybów?
Widziałem wszystkie te odmiany używane w tym czy innym momencie. Prowadzi mnie to do zastanowienia, czy rzeczywiście istnieje między nimi różnica. Widziałem, że czasami używanie 0
nie działa dla mnie, podczas gdy nil
działa. Czy istnieją różnice w tym, gdzie są używane?
Odpowiedzi:
TL; DR
Przed ustawieniem dowolnej zmiennej musisz wiedzieć, jak należy ją interpretować. Podobnie przed wywołaniem dowolnej funkcji (w tym tych używanych do przełączania mniejszych trybów), musisz wiedzieć, jak interpretowane są argumenty tej funkcji.
Użyj C-hfi, C-hvaby przejrzeć dokumentację dla danej funkcji lub zmiennej. Należy określić oczekiwane wartości.
„Non-zero” oznacza dosłownie wszystko , co nie jest
nil
. Obejmuje to0
i liczby ujemne.Drobne tryby
Weźmy konkretny przykład. Wpisz C-hf
blink-cursor-mode
i naciśnij, RETaby zobaczyć dokumentację funkcji dlablink-cursor-mode
:Możemy włączyć tryb kursora mrugania na jeden z następujących sposobów:
Zauważ, że argument of
t
zadziała, mimo że ciąg doc nie wspomniał o nim. Chociaż często tak jest, najbezpieczniejszym rozwiązaniem jest użycie tego, co mówi ci ciąg dokumentów, co w tym przypadku jest wartością dodatnią.Zauważ też, że argument argumentu
nil
zadziała. Zdecydowanie odradzamnil
w ten sposób, ponieważ powoduje to, że twój zamiar jest niejasny. Gdybym przeglądał twój kod lisp i zobaczyłemnil
argument, zakładam, że chciałeś wyłączyć tryb podrzędny.Możemy również wyłączyć
blink-cursor-mode
w następujący sposób:Zauważ ponownie, że nie
nil
jest to jeden ze sposobów na wyłączenie tego drobnego trybu. Dotyczy to prawie każdego mniejszego trybu, z którym się spotkasz.Zmienne
Spójrzmy teraz na przykład zmiennej. Wpisz C-hv
truncate-lines
i naciśnij, RETaby przejrzeć dokumentację zmiennejtruncate-lines
:Możesz włączyć obcinanie na jeden z następujących sposobów:
Może cię to zaskoczyć, że
0
i-1
będą działać. Ponownie odradzam ich używanie, ponieważ powoduje to, że twoje intencje są niejasne.Jedynym sposobem wyłączenia obcinania jest:
Innymi słowy, możesz ustawić
truncate-lines
równe cyfry, litery, ciągi znaków, listy lub cokolwiek innego, o ile nie będzie to miało wpływunil
, umożliwi to obcięcie. (Ale powinieneś naprawdę trzymać sięt
lub1
).źródło
To są różne rzeczy. 0, 1 i -1 to różne liczby;
nil
jest symbolem.Każdy z nich jest używany wszędzie, do wielu różnych rzeczy. Aby dowiedzieć się, do czego każdy jest używany w określonym kontekście , zapoznaj się z dokumentacją dla tego kontekstu . Dotyczy to także kontekstów włączania i wyłączania różnych trybów, włączania i wyłączania różnych rzeczy za pomocą zmiennych oraz wielu innych kontekstów.
W sumie:
Dokument dla danego trybu ogólnie mówi, jak go włączać i wyłączać. Jeśli mówi ci, żebyś użył 1 lub -1 albo
nil
albo nienil
do czegoś, to właśnie to oznacza. Istnieją pewne ogólne zasady włączania i wyłączania trybów (interaktywnie i z kodu Lisp). Ale wygląda na to, że naprawdę musisz zacząć od uzyskania ogólnego tła.Skonsultuj się z dokumentem Emacsa, aby dowiedzieć się, jak poprosić o pomoc i inne informacje od samego Emacsa : jak sprawdzić wartość zmiennej, jak zobaczyć dokument zmiennej lub funkcji (w tym funkcji, która włącza / wyłącza tryb) , i tak dalej.
Możesz zacząć od użycia
C-h C-h
( Ctrl-h Ctrl-h), aby dowiedzieć się o systemie pomocy Emacsa. I buduj stamtąd.C-h r
wprowadza cię do podręcznika Emacsa. Spróbuj samouczek Emacs:C-h t
. I sprawdź stronę Emacs Wiki Newbie oraz stronę o LearningEmacs .Aby zacząć uczyć się o Emacs Lisp:,
C-h i
wybierz podręcznik o nazwieEmacs Lisp Intro
i zacznij czytać. I sprawdź stronę Emacs Wiki na temat uczenia się Emacs Lisp .źródło
nil
logiczny odpowiednik fałszu it
prawdy, a reszta to tylko liczby. Ale nie byłem pewien, w jakich kontekstach były zwykle używane.