TL; DR
Прежде чем устанавливать какую-либо переменную, вы должны знать, как эта переменная должна интерпретироваться. Точно так же, прежде чем вызывать какую-либо функцию (включая те, которые используются для переключения второстепенных режимов), вы должны знать, как интерпретируются аргументы этой функции.
Используйте C-hfи C-hvдля просмотра документации по рассматриваемой функции или переменной. Следует указать ожидаемые значения.
«Не ноль» означает буквально все, что не является nil. Это включает 0и отрицательные числа.
Незначительные режимы
Давайте возьмем конкретный пример. Введите C-hfblink-cursor-mode и нажмите, RETчтобы увидеть документацию по функциям для blink-cursor-mode:
(режим мигания курсора и необязательный ARG)
Переключатель курсора мигает (режим Blink Cursor). С префиксным аргументом ARG, включите режим Blink Cursor, если ARG положительный, и отключите его в противном случае. Если вызывается из Lisp, включите режим, если ARG опущен или ноль.
Мы можем включить режим Blink Cursor любым из следующих способов:
(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)
Обратите внимание, что аргумент tбудет работать, хотя в строке документа это не упоминается. Хотя это часто имеет место, ваша самая безопасная ставка - использовать то, что подсказывает вам строка документа, что в данном случае является положительным значением.
Также обратите внимание, что аргумент nilбудет работать. Я настоятельно рекомендую против nilэтого, потому что это делает ваше намерение неясным. Если бы я просматривал ваш код lisp и увидел nilаргумент, я бы предположил, что вы хотите отключить второстепенный режим.
Мы также можем отключить blink-cursor-modeследующими способами:
(blink-cursor-mode 0) ; Non-positive argument
(blink-cursor-mode -1) ; Negative argument
Еще раз обратите внимание, что nilэто не один из способов отключить этот второстепенный режим. Это верно почти для любого второстепенного режима, с которым вы столкнетесь.
переменные
Теперь давайте посмотрим на пример переменной. Введите C-hvtruncate-linesи нажмите, RETчтобы посмотреть документацию для переменной truncate-lines:
truncate-lines - это переменная, определенная в `C исходном коде '.
Значения, отличные от нуля, не отображают строки продолжения. Вместо этого, дайте каждой строке текста только одну строку экрана.
Вы можете включить усечение любым из следующих способов:
(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)
Это может удивить вас, что 0и -1будет работать. Опять же, я бы рекомендовал не использовать их, потому что это делает ваши намерения неясными.
Единственный способ отключить усечение - это
(setq truncate-lines nil) ; nil value
Другими словами, вы можете установить значение, truncate-linesравное числам, буквам, строкам, спискам или чему-либо еще, если вы этого не захотите, если только оно не будет оцениваться nil, включит усечение. (Но вы должны действительно придерживаться tили 1).