วิธีการป้องกัน“ นิยามฟังก์ชั่นของ Symbol เป็นโมฆะ: เกิดข้อผิดพลาด” เมื่อใช้ emacs ในคอนโซล


11

หากต้องการปิดการใช้งานแถบเลื่อนใน emacs ฉันได้เพิ่ม (toggle-scroll-bar -1) ลงในไฟล์. emacs ของฉันและใช้งานได้ดีเมื่อฉันเรียกใช้ emacs นอกโหมดคอนโซล อย่างไรก็ตามเมื่อฉันเรียกใช้ emacs ใน terminal ฉันได้รับข้อผิดพลาดการกำหนดฟังก์ชั่น Symbol เป็นโมฆะ: toggle-scroll-bar

ฉันใช้ Emacs 23.3.1

นี่คือร่องรอยเมื่อฉันรัน --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 อาจให้บัฟเฟอร์คำเตือนแก่คุณเพื่อบอกให้คุณเรียกใช้ emacs พร้อม--debug-initตัวเลือกเพื่อรับข้อผิดพลาดย้อนหลังอย่างสมบูรณ์ ลองใช้และเพิ่มข้อมูลนั้นลงในคำถาม M-x emacs-versionพร้อมกับรุ่น Emacs อันของโค้ดนั้นใช้งานได้ดีกับ Emacs 23.2
Trey Jackson

@Trey Jackson ฉันได้เพิ่มรายละเอียดที่คุณขอมาดูเหมือนว่าฉันจะใช้ Emacs 23.1 ดังนั้นฉันจะลองอัปเกรด ขอขอบคุณสำหรับคำแนะนำของคุณ.
bneil

แปลกมาก. ตกลงการทดสอบครั้งต่อไปกำลังเรียกใช้ Emacs โดยไม่มี. emacs ของคุณemacs -nw -qและในบัฟเฟอร์รอยขีดข่วนให้พิมพ์(scroll-bar-mode -1)C-jและดูว่าคุณได้รับข้อผิดพลาดหรือไม่ ฟังก์ชั่นนั้นกระจายอยู่กับ Emacs ในscroll-bar.elแพ็คเกจดังนั้นฉันเดาว่าคุณ.emacsมีบางอย่างแปลก ๆ หรือ Emacs นั้นติดตั้งไม่ถูกต้อง
Trey Jackson

ฉันได้รับข้อผิดพลาดนี้เมื่อทำที่ Debugger ป้อน - ข้อผิดพลาดกระเพื่อม: (void ฟังก์ชั่นแถบเลื่อนโหมด) (แถบเลื่อนโหมด -1) eval ((แถบเลื่อนโหมด -1)) eval-last-sexp -1 (t) eval-last-sexp (t) eval-print-last-sexp () เรียกการโต้ตอบ (eval-print-last-sexp ไม่มีศูนย์)
bneil

นี่คือไฟล์. emacs ของฉันpastebin.com/4mYE91Neด้วย
bneil

คำตอบ:


14

FWIW คู่มือ emacs ไม่สนับสนุนการใช้window-systemเป็นเพรดิเคต

อย่าใช้หน้าต่างระบบและหน้าต่างเริ่มต้นระบบเป็นเพรดิเคตหรือตัวแปรแฟล็กบูลีนหากคุณต้องการเขียนโค้ดที่ทำงานแตกต่างกันในเทอร์มินัลข้อความและการแสดงกราฟิก นั่นเป็นเพราะระบบหน้าต่างไม่ได้เป็นตัวบ่งชี้ที่ดีของความสามารถของ Emacs ในประเภทการแสดงผลที่กำหนด ให้ใช้ display-graphic-p หรือจอแสดงผลอื่น ๆ - * - p แทนที่อธิบายไว้ใน Display Feature Testing

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

ฉันใช้สิ่งนี้เพื่อปิดแถบเลื่อนและแถบเครื่องมือเมื่ออยู่ในการแสดงผลกราฟิก

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

5

ในขณะที่ฉันคิดว่าคำตอบของ @ เรียบร้อยแล้วดีที่สุดและครอบคลุมทุกฐานเพื่อปิดใช้งานแถบเลื่อนโดยเฉพาะคุณสามารถใส่สิ่งต่อไปนี้ในของคุณ ~/.emacs

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

-2

ฉันเดาว่าเมื่อคุณเปิดemacs -nwemacs ไม่ต้องกังวลกับการโหลด scroll-bar.el thats toggle-scroll-barทำไมมันจะมีปัญหาในการที่จะหาฟังก์ชั่น
อาจแทนหากคุณใส่
(scroll-bar-mode -1)
อาจจะทำงาน


1
(toggle-scroll-bar -1)ทำงานได้ดีในemacs -nwสำหรับ Emacs 23.2 ...
แต้มแจ็คสัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.