Entiendo que nil, 0y / o -1se usan para deshabilitar algunas funciones y t, 1y / o +1se usan para habilitar algunas funciones. Al asignar variables o habilitar / deshabilitar modos menores, ¿cuál debo elegir?
He visto todas estas variaciones utilizadas en un momento u otro. Me lleva a preguntarme si realmente hay una diferencia entre ellos. He visto que a veces usar 0no funciona para mí, mientras que nilsí. ¿Hay diferencias de dónde se usan?

Respuestas:
TL; DR
Antes de establecer cualquier variable, debe saber cómo se debe interpretar esa variable. Del mismo modo, antes de llamar a cualquier función (incluidas las utilizadas para alternar modos menores), debe saber cómo se interpretan los argumentos de esa función.
Use C-hfy C-hvpara ver la documentación de la función o variable en cuestión. Debe especificar los valores que se esperan.
"No nulo" significa literalmente todo lo que no es
nil. Esto incluye0y números negativos.Modos menores
Tomemos un ejemplo específico. Escriba C-hf
blink-cursor-modey presione RETpara ver la documentación de la función parablink-cursor-mode:Podemos habilitar el modo Cursor de parpadeo de cualquiera de las siguientes maneras:
Tenga en cuenta que un argumento de
tfuncionará, aunque la cadena de documentación no lo mencione específicamente. Si bien este suele ser el caso, su apuesta más segura es usar lo que la cadena de documentos le indica que use, que en este caso es un valor positivo.Además, observe que un argumento de
nilfuncionará. Recomiendo encarecidamente quenilno lo haga de esta manera porque deja en claro su intención. Si estuviera hojeando su código lisp y viera unnilargumento, supondría que desea deshabilitar el modo menor.También podemos desactivarlo
blink-cursor-modede las siguientes maneras:Observe nuevamente que esa no
niles una de las formas de deshabilitar este modo menor. Esto es cierto para casi cualquier modo menor que encuentre.Variables
Ahora veamos un ejemplo de una variable. Escriba C-hv
truncate-linesy presione RETpara ver la documentación de la variabletruncate-lines:Puede activar el truncamiento de cualquiera de las siguientes maneras:
Puede sorprenderte que el
0y el-1funcionen. Una vez más, recomendaría no usarlos porque deja en claro sus intenciones.La única forma de deshabilitar el truncamiento es esta:
En otras palabras, puede establecer
truncate-linesnúmeros iguales, letras, cadenas, listas o cualquier otra cosa que desee, siempre y cuando no se evalúenil, permitirá el truncamiento. (Pero realmente deberías quedarte conto1).fuente
Estas son todas las cosas diferentes. 0, 1 y -1 son números diferentes;
nilEs un símbolo.Cada uno se usa en todo el lugar, para muchas cosas diferentes. Para averiguar para qué se utiliza cada uno en un contexto particular , consulte el documento para ese contexto . Y eso incluye contextos de activar o desactivar diferentes modos, habilitar y deshabilitar diferentes cosas usando variables y muchos otros contextos.
En suma:
El documento para un modo dado generalmente te dice cómo activarlo y desactivarlo. Si le dice que use 1 o -1
nilo nonilpara algo, entonces eso es lo que significa. Existen algunas reglas generales para activar y desactivar los modos (interactivamente y desde el código Lisp). Pero parece que realmente necesita comenzar obteniendo algunos antecedentes generales.Consulte el documento de Emacs para saber cómo solicitar ayuda y otra información de Emacs : cómo verificar el valor de una variable, cómo ver el documento de una variable o una función (incluida una función que activa / desactiva un modo) , y así.
Puede comenzar usando
C-h C-h( Ctrl-h Ctrl-h), para aprender sobre el sistema de ayuda de Emacs. Y construir a partir de ahí.C-h rte lleva al manual de Emacs. Probar el tutorial de Emacs:C-h t. Y revise la página de Emacs Wiki Newbie y la página sobre LearningEmacs .Para comenzar a aprender sobre Emacs Lisp:,
C-h ielija el manual con el nombreEmacs Lisp Introy comience a leer. Y consulte la página Wiki de Emacs sobre Learning Emacs Lisp .fuente
niles el equivalente lógico de falso ytverdadero y el resto son solo números. Pero no estaba seguro de en qué contextos generalmente se usaban.