¿Cómo evitar que la "definición de la función del símbolo sea nula: error" al ejecutar emacs en la consola?


10

Para deshabilitar la barra de desplazamiento en emacs agregué (toggle-scroll-bar -1) al archivo .emacs y funciona muy bien cuando ejecuto emacs fuera del modo consola. Sin embargo, cuando ejecuto emacs en el terminal me sale el error La definición de la función del símbolo es nula: toggle-scroll-bar

Estoy ejecutando Emacs 23.3.1

aquí está el rastro cuando ejecuto --debug-init

    1 Debugger entered--Lisp error: (void-function scroll-bar-mode)                
    2   (scroll-bar-mode -1)                                                       
    3   eval-buffer(#<buffer  *load*> nil "/Users/neil/.emacs.d/init.el" nil t)  ;$
    4   load-with-code-conversion("/Users/neil/.emacs.d/init.el" "/Users/neil/.ema$
    5   load("/Users/neil/.emacs.d/init" t t)                                      
    6   #[nil "^H\205\264^@   \306=\203^Q^@\307^H\310Q\2027^@ \311=\2033^@\312\307$
    7   command-line()                                                             
    8   normal-top-level()

Emacs probablemente le proporcionó un búfer de advertencias que le indica que ejecute emacs con la --debug-initopción de obtener un seguimiento de error completo. Intenta eso y agrega esa información a la pregunta. Junto con la versión de Emacs M-x emacs-version. Ese fragmento de código funciona bien con Emacs 23.2.
Trey Jackson

@Trey Jackson, agregué los detalles que solicitó, parece que estoy ejecutando Emacs 23.1, así que intentaré actualizar. Gracias por tus sugerencias.
bneil

Muy raro. Ok, siguiente prueba se está ejecutando Emacs w / out .emacs, emacs -nw -qy luego en el cero búfer, el tipo (scroll-bar-mode -1)C-jy ver si se produce un error. Esa función se distribuye con Emacs en el scroll-bar.elpaquete, por lo que supongo que .emacstiene algo extraño o que Emacs no se instaló correctamente.
Trey Jackson

Recibo este error al hacer que el depurador ingresó - Error de Lisp: (void-function scroll-bar-mode) (scroll-bar-mode -1) eval ((scroll-bar-mode -1)) eval-last-sexp -1 (t) eval-last-sexp (t) eval-print-last-sexp () call-interactively (eval-print-last-sexp nil nil)
bneil

Aquí está mi archivo .emacs pastebin.com/4mYE91Ne también
bneil

Respuestas:


13

FWIW El manual de emacs desalienta el uso de window-systemcomo predicado.

No use window-system y initial-window-system como predicados o variables de bandera booleana, si desea escribir código que funcione de manera diferente en terminales de texto y pantallas gráficas. Esto se debe a que el sistema de ventanas no es un buen indicador de las capacidades de Emacs en un tipo de pantalla dado. En su lugar, use display-graphic-p o cualquiera de los otros predicados display * * -p descritos en Display Feature Testing.

http://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Systems.html

Lo uso para desactivar la barra de desplazamiento y la barra de herramientas cuando estoy en una pantalla gráfica.

(if (display-graphic-p)
    (progn
      (tool-bar-mode -1)
      (scroll-bar-mode -1)))

5

Si bien creo que la respuesta de @neatonk es la mejor y cubre todas las bases, para deshabilitar específicamente la barra de desplazamiento, puede poner lo siguiente en su ~/.emacs

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))

-2

Supongo que cuando abres emacs -nwemacs ni siquiera te molestas en cargar scroll-bar.el. Es por eso que tiene problemas para encontrar la función toggle-scroll-bar.
puede ser en cambio si pones
(scroll-bar-mode -1)
probablemente trabajo.


1
(toggle-scroll-bar -1)funciona bien emacs -nwpara Emacs 23.2 ...
Trey Jackson
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.