Cómo elegir entre cero y 0, o t y 1 al configurar variables o habilitar modos


19

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?


1
He reescrito la pregunta para indicar más claramente lo que creo que estás preguntando. Siéntase libre de revertir la edición si estoy equivocado.
nispio

@nispio Tus ediciones están bien. Muchas gracias. :)
greduan

Respuestas:


17

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 incluye 0y números negativos.


Modos menores

Tomemos un ejemplo específico. Escriba C-hfblink-cursor-mode y presione RETpara ver la documentación de la función para blink-cursor-mode:

(modo de cursor parpadeante y ARG opcional)

Alternar el cursor parpadeando (modo de cursor de parpadeo). Con un argumento de prefijo ARG, active el modo de parpadeo del cursor si ARG es positivo, y desactívelo de lo contrario. Si se llama desde Lisp, habilite el modo si se omite ARG o es nulo.

Podemos habilitar el modo Cursor de parpadeo de cualquiera de las siguientes maneras:

(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)

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 que nilno lo haga de esta manera porque deja en claro su intención. Si estuviera hojeando su código lisp y viera un nilargumento, supondría que desea deshabilitar el modo menor.

También podemos desactivarlo blink-cursor-modede las siguientes maneras:

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

Observe nuevamente que esa nonil es 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-hvtruncate-linesy presione RETpara ver la documentación de la variable truncate-lines:

truncate-lines es una variable definida en el 'código fuente C'.

No nulo significa no mostrar líneas de continuación. En su lugar, asigne a cada línea de texto una sola línea de pantalla.

Puede activar el truncamiento de cualquiera de las siguientes maneras:

(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)

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:

(setq truncate-lines nil)     ; nil value

En otras palabras, puede establecer truncate-linesnúmeros iguales, letras, cadenas, listas o cualquier otra cosa que desee, siempre y cuando no se evalúe nil, permitirá el truncamiento. (Pero realmente deberías quedarte con to 1).


Esto respondió mi pregunta. Gracias. :)
greduan

0

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:

  • Su pregunta es demasiado amplia para ser útil.
  • Debe consultar el documento: (a) en general, para aprender un poco sobre Emacs Lisp, y (b) en contextos particulares (por ejemplo, el documento para un modo particular).

El documento para un modo dado generalmente te dice cómo activarlo y desactivarlo. Si le dice que use 1 o -1 nilo no nilpara 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 nombre Emacs Lisp Introy comience a leer. Y consulte la página Wiki de Emacs sobre Learning Emacs Lisp .


1
Gracias por tu respuesta. :) Supongo que estaba preguntando en qué contextos se usan. Debería haberlo aclarado. Gracias. :) Soy consciente de las principales diferencias entre los símbolos, como cómo niles el equivalente lógico de falso y tverdadero y el resto son solo números. Pero no estaba seguro de en qué contextos generalmente se usaban.
greduan

Vea lo que escribí sobre información general sobre modos (vinculado al manual). A pesar de dicha información general, siempre debe comenzar por verificar el documento para el modo particular que le interesa. Le dirá qué usar para encenderlo o apagarlo. Si no es así, se aplica el comportamiento general descrito en el manual, pero comience con el modo particular doc . El punto no son las diferencias entre esas cosas en sí mismas. El punto es las diferencias en cómo se usan en contextos particulares. Para eso, comienza preguntando el contexto.
Dibujó el

1
OKAY. Muchas gracias. :) Genial que Emacs tenga su propio sitio SE ¿eh?
greduan

1
PD: no te preocupes. Estoy seguro de que otros derramarán los granos aquí sobre algunas de las reglas generales . ;-) Prefiero (a) hacer que consultes al documento sobre esto, porque fue escrito con este aprendizaje en mente, y (b) que comiences siempre preguntando el modo particular sobre sí mismo. Las reglas generales no prevalecen sobre los detalles del modo, y si ignoras esto último, perderás cosas.
Dibujó el

Lo que será genial será cuando SE obtenga su propio modo Emacs. ;-)
Dibujó el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.