Emacs

คำถาม & คำตอบสำหรับผู้ใช้ขยายหรือพัฒนา Emacs

1
จะทราบได้อย่างไรว่าฟังก์ชันใดถูกเรียกใช้จาก (backtrace / stacktrace)
ฉันพบปัญหาว่าภูมิภาคปิดใช้งาน (ในโหมดเครื่องหมายชั่วคราว) deactivate-markมีการเรียกใช้ฟังก์ชั่นและฉันต้องการทราบว่าถูกเรียกใช้จากที่ไหน (และทำไม) ฉันพยายามM-x debug-on-entry RET deactivate-markแล้วก็หยุด แต่ฉันไม่พบวิธีการโทรหา stacktrace ที่แสดงทั้งหมดคือ: Debugger entered--entering a function: * deactivate-mark() ฉันพยายามM-x edebug-eval-defunแต่ Edebug ไม่แสดงผู้โทรด้วย ฉันจะทราบได้อย่างไรว่าเหตุใดจึงdeactivate-markมีการเรียก(จากที่ใด) ฉันกำลังมองหาฟังก์ชั่น backtrace หรือ stacktrace แก้ไข: advice-addเคล็ดลับ: (defun message-show-backtrace () (message "%s" (backtrace-frame 10))) (advice-add deactivate-mark :before #'message-show-backtrace) ผลิตในnil*Messages* แก้ไข: ข้อมูลเพิ่มเติมเกี่ยวกับdeactivate-mark: http://emacshorrors.com/posts/deactivate-mark.html

1
พา ธ ของไฟล์ถูกแมปไปยังไดเรกทอรีย่อยอย่างไรใน. dir-locals.el
.dir-locals.elผมชอบความคิดของ ฉันมี.dir-locals.elไฟล์ของตัวเองในโฮมไดเร็กตอรี่ที่ควรตั้งค่าตัวแปรทั้งหมด.dir-locals.elสำหรับไดเร็กตอรี่/ ไฟล์ที่ฉันเปิดยกเว้นว่าจะใกล้กับไดเรคทอรีที่ฉันเปิดไฟล์เข้าไป. ถึงแม้ว่าไฟล์นั้นจะรู้จัก นำไปใช้กับไฟล์ที่เปิด นี่คือของฉัน~/.dir-locals.el: (("dev/school" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) ("dev/test" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) (c-mode . ((c-file-style . "linux") (c-basic-offset . 8)))) เมื่อฉันเปิดแฟ้ม~/dev/test/test.cตัวแปรindent-tabs-modeมีการตั้งค่าtและเป็นc-basic-offset8 (describe-variable 'c-basic-offset)ในแฟ้มที่บอกฉันว่ามันมีการตั้งค่าจาก8~/.dir-locals.el (describe-variable 'indent-tabs-mode)ในไฟล์นั้นบอกว่ามันคุ้มค่า ( t) เป็นเพียงแค่ในสถานะเริ่มต้น ฉันสามารถทำพฤติกรรมที่ต้องการได้หรือไม่? ผมทำอะไรผิดหรือเปล่า? พา ธ ของไฟล์ถูกแมปไปยังไดเรกทอรีย่อย~/.dir-locals.elอย่างไร แก้ไข: ตามที่โจนาธานแนะนำฉันก็ลองทำเช่นกัน: (;; dev/school subdir ("dev/school" . …

2
จดจำโหมดสำหรับไฟล์ที่ไม่มีนามสกุล
ฉันเริ่มแก้ไขไฟล์จำนวนมากที่ไม่มีส่วนขยาย แต่ยังอยู่ในรูปแบบโหมดหลัก ฉันเป็นผู้ใช้ Emacs เพียงคนเดียวในทีมและฉันไม่ต้องการทำให้มันชัดเจนว่าผู้แก้ไขของฉันต้องการสิ่งพิเศษ ฉันต้องการหลีกเลี่ยงการเปลี่ยน codebase ฉันไม่สามารถเปลี่ยนชื่อไฟล์ได้ ฉันไม่สามารถใช้ความคิดเห็นพิเศษของ Emacs ได้ ฉันต้องการให้ Emacs จดจำโหมดใดก็ตามที่ฉันวางไฟล์ด้วยตนเองในที่สุด (พร้อมพูดM-x conf-mode) และเปิดใช้งานโหมดนั้นโดยอัตโนมัติเมื่อฉันเข้าชมอีกครั้ง ฉันใช้savehist-modeเพื่อจัดการความเพียร ฉันสามารถทำสิ่งนี้อย่างเจ็บปวดได้หรือไม่?
10 major-mode 

3
การแก้ไขหลายบล็อกต้นทางในหนึ่งบัฟเฟอร์
ฉันมีบล็อกแหล่งที่มาหลายอันซึ่งทั้งหมดถูกพันกันเป็นไฟล์เดียวกัน เมื่อฉันเรียกใช้C-c 'ภายในหนึ่งบล็อกเฉพาะบล็อกนี้เท่านั้นที่แสดงในบัฟเฟอร์ใหม่ มีความเป็นไปได้ที่จะแสดงทุกส่วนของไฟล์นี้ภายในบัฟเฟอร์นี้ (แทนที่จะเป็นเพียงส่วนย่อยนี้เท่านั้น)? ตัวอย่าง: #+begin_src emacs-lisp :tangle foo.el (defvar *ok* "") #+end_src This is where the variable is stored... #+begin_src emacs-lisp :tangle foo.el (defun add-one (n) (+ 1 n)) #+end_src ถ้าฉันโดนC-c 'บล็อกแรกฉันจะได้รับ: (defvar *ok* "") แต่ฉันต้องการ: (defvar *ok* "") (defun add-one (n) (+ 1 n))

3
ส่งออกแพ็คเกจที่ติดตั้ง Emacs หรือไม่
ฉันใช้ emacs 24.4 ฉันได้เพิ่มแพ็คเกจที่ติดตั้งจำนวนมากผ่านทางคำสั่ง Mx list-packages มากกว่าหนึ่งปีของการใช้งาน ฉันชอบส่งออกรายการแพ็คเกจที่ติดตั้งไว้เพื่อใช้ในที่อื่น การคัดลอก. emacs ของฉันทำให้ฉันมีข้อผิดพลาดบางอย่างเมื่อเริ่มต้นซึ่ง jogs หน่วยความจำของฉันติดตั้งบางสิ่ง ฉันสงสัยว่าฉันสามารถคัดลอก. emacs.d ได้ แต่นั่นอาจเป็นความคิดที่แย่ มีขั้นตอนหรือคำสั่งที่ฉันสามารถออกเพื่อดัมพ์รายการแพ็กเกจที่ติดตั้งไปยังไฟล์ที่สามารถใช้เพื่อรับมันบนเครื่องต่างประเทศได้อย่างง่ายดายหรือไม่?
10 package 

3
อ่าน e-books ใน Emacs
ฉันใช้ eww เพื่ออ่านบทความออนไลน์ใน Emacs แทนในเบราว์เซอร์เพราะมันเสียสมาธิน้อยลงและฉันสามารถจดบันทึกในโหมดองค์กรได้อย่างรวดเร็วโดยไม่ต้องสลับแอปพลิเคชัน ฉันสงสัยว่ามันเป็นไปได้อย่างไรในการอ่าน e-books ใน epub หรือรูปแบบ pdf ใน Emacs? ฉันพบ epubmode.el ใน emacswiki.org แต่ใช้งานไม่ได้และไม่ได้อัปเดตตั้งแต่ปี 2011
10 pdf  docview 

2
Emacs มักจะขอให้เชื่อถือชุดรูปแบบสีเมื่อเริ่มต้น
Emacs ของฉันจะแจ้งให้ฉันเสมอว่าควรเชื่อถือชุดรูปแบบสีที่เลือกหรือไม่ ฉันมักจะตอบyและyให้ความไว้วางใจและจดจำตัวเลือกของฉัน ฉันกำลังโหลดธีมสีด้วยตนเอง: (load-theme 'my-favourite-theme) ฉันคิดว่านี่เป็นเพราะการปรับแต่งง่ายอยู่ด้านล่างโหลดธีมสี เป็นวิธีการแก้ไขหรือไม่ หรือฉันควรมอบหมายการโหลดธีมสีเพื่อการปรับแต่งง่ายเช่นกัน?

1
การตรวจสอบการสะกดผิดบริสุทธิ์ใน Emacs
คำถามมีตัวเลือกอะไรบ้างในการทำการตรวจสอบการสะกดคำใน emacsพูดคุยเกี่ยวกับโซลูชั่นการตรวจสอบการสะกดคำต่างๆสำหรับ Emacs Emacs ispell interface ใช้เครื่องมือภายนอกเช่นAspellหรือHunspellสำหรับการตรวจสอบการสะกดคำ เมื่อพิจารณาถึงความจริงที่ว่ามีไฟล์พจนานุกรมฟรีจำนวนมาก (เช่นOpenofficeดูตัวอย่างไฟล์พจนานุกรมen_US.zip ) ฉันสงสัยว่ามันจะเป็นไปได้ที่จะเขียนฟังก์ชั่นตรวจสอบการสะกดคำใน Emacs โดยใช้ไฟล์พจนานุกรมฟรี เพิ่ม : แม่นยำมากขึ้นฉันสงสัยว่ามีแพคเกจที่มีอยู่ซึ่งสามารถใช้สำหรับการตรวจสอบการสะกดคำ (โดยไม่ต้องใช้เครื่องมือภายนอกเช่นAspellหรือHunspell) ภายใน Emacs เครื่องมือที่ตรวจสอบว่าคำศัพท์นั้นถูกต้องหรือไม่และไม่แนะนำการแก้ไขบางอย่าง ในกรณีที่คำตอบเป็นลบคำแนะนำใด ๆ ในการทำเช่นนี้จะเป็นประโยชน์

1
ฉันจะป้องกันหนึ่ง subprocess จากการอดอาหารอื่น ๆ ได้อย่างไร
เพื่อความชัดเจนฉันไม่ได้พูดถึงสิ่งที่ควรกำหนดให้ emacs เป็นแบบมัลติเธรด ในการทำซ้ำ: emacs -Q # ฉันทำงาน 24.4.1 ทำเฟรมที่สอง สลับกลับไปที่เฟรมแรก Mx เชลล์ Mx เปลี่ยนชื่อไม่ซ้ำใคร (เราจะสร้างเชลล์ที่สองในภายหลัง) เริ่มวิ่ง: while true; do echo "hello world"; done ในเฟรมที่สอง Mx shell เชลล์ที่สองแทบจะไม่แสดงผลเลย (แทบจะไม่ได้ผลเลยหลังจากพยายามซ้ำหลายครั้ง) เห็นได้ชัดว่า emacs จะไม่มีวันหยุดพักจากการอ่านเอาต์พุตของเชลล์แรกเพื่อฟังเอาต์พุตที่มาจากกระบวนการอื่น ๆ มันจะเป็นพฤติกรรมที่ดีกว่ามากสำหรับการปัดโรบินเมื่อมีหลายกระบวนการที่มีเอาต์พุตที่ค้างอยู่ มีวิธีใดที่จะทำให้พฤติกรรมดีขึ้นหรือไม่ เคล็ดลับเดียวที่ฉันรู้คือการทำให้เชลล์บัฟเฟอร์เป็นกระบวนการของตัวเอง แต่น่าเสียดายที่มันไม่ได้ผลสำหรับฉัน แม้ว่าฉันจะทำเช่นนั้นฉันก็ต้องเรียกใช้ subprocess เพื่อฟังซอคเก็ตเพื่อให้ซอฟต์แวร์รู้จำเสียงพูดทำงานได้เพื่อที่ฉันจะสามารถควบคุมเชลล์ได้ตั้งแต่แรกนั่นคือวิธีที่ฉันค้นพบสิ่งนี้ การเรียกใช้ลูปไม่สิ้นสุดเช่นด้านบนป้องกันไม่ให้ข้อมูลใด ๆ ถูกถอดออกจากซ็อกเก็ต


4
ทำให้การเรียงลำดับความเคารพอ่านเสร็จสมบูรณ์ของคอลเลกชัน
ทั้ง: (completing-read "test: " '("a" "b" "c")) หรือ: (completing-read "test: " '("c" "b" "a")) TABจะให้ผลลัพธ์เดียวกันในบัฟเฟอร์เสร็จสิ้นเมื่อกด ฉันจะทำให้มันเป็นไปตามลำดับการเรียงลำดับได้อย่างไร
10 elisp 

2
สร้าง emacs lock display ของบรรทัดแรกของไฟล์
ฉันจะทำให้ Emacs แสดงบรรทัดแรกของไฟล์ได้เสมอซึ่งมีข้อมูลส่วนหัว (เช่น CSV) ได้อย่างไรเมื่อฉันเลื่อนลงมาโดยที่ไม่สามารถมองเห็นได้อีกต่อไป
10 csv 

4
วิธีที่ง่ายที่สุดในการเปิดโฟลเดอร์ที่มีไฟล์ปัจจุบันโดย explorer เริ่มต้นของระบบปฏิบัติการคืออะไร?
เป็นวิธีที่ง่ายที่สุดในการเปิดโฟลเดอร์ที่มีไฟล์ปัจจุบันโดย explorer เริ่มต้นของระบบปฏิบัติการ (เช่น explorer.exe ในกรณีของ Windows OS) คืออะไร?

2
จะผูก C- [จริงได้อย่างไร?
C-[เทียบเท่ากับปุ่มลัดบนแป้นพิมพ์ภาษาอังกฤษแบบสหรัฐอเมริกาดังนั้นความพยายามใด ๆ ที่จะผูกมันจะทำให้M-พฤติกรรมยุ่งเหยิง Emacs ดูเหมือนจะไม่มีปัญหาในการบอก<escape>และC-[แยกในเฟรม GUI งานต่อไปนี้ทำงานได้ดีและมีผลผูกพันเริ่มต้นด้วยM-ยังคงทำงาน: (global-set-key (kbd "<escape>") (lambda () (interactive) (message "<escape>"))) อย่างไรก็ตามถ้าฉันผูก (global-set-key (kbd "C-[") (lambda () (interactive) (message "C-["))) ทันใดนั้น emacs ก็บ้าคลั่งและมีผลผูกพันเหมือนM-xหยุดพัก ยิ่งไปกว่านั้นการกดC-[ปฏิเสธที่จะเหนี่ยวไกแลมบ์ดาที่ถูกผูกไว้ ที่น่าสนใจพอC-x @ c [(ใช้ควบคุมการปรับแต่งเพื่อวงเล็บเปิด) C-[ is undefinedยังกล่าวว่า มีวิธีผูกมัดบางอย่างกับC-[โดยไม่ทำลาย emacs หรือไม่?

1
หลงทาง 4m ก่อนพร้อมท์ด้วย Zsh ใน Mx และคำ
ฉันเพิ่งอ่านเล่นหอยใน Emacsและใช้เวลาในการปรับตัวเข้ากับที่ซับซ้อน zsh ฉันพร้อมที่จะทำงานร่วมกับความสามารถที่ จำกัด ของและ M-x shellM-x ansi-term ต่อไปนี้ความพยายามนี้ฉันตอนนี้ในที่สุดก็สามารถที่จะใช้ zsh จากภายใน Emacs M-x ansi-termแต่มีข้อแม้ว่า-รองรำคาญด้วย ฉันมักจะเห็นข้อความหลงทาง4mก่อนแจ้ง อย่างที่คุณเห็นปรากฎการณ์นี้ดูเหมือนจะเป็นอิสระจากธีมพรอมต์ที่เกิดขึ้นจริง นอกจากนี้ยังปรากฏขึ้นพร้อมกับการแจ้งเตือนในตัวแม้แต่ตัวง่าย ๆ ที่ไม่ใช้ตัวควบคุมแฟนซีใด ๆ เป็นเรื่องของความเป็นจริงมันก็เกิดขึ้นกับการเริ่มต้นพร้อมรับคำเช่นถ้าฉันจะเริ่มต้นโดยไม่ต้อง zsh .zshrcของฉัน มันเป็นเรื่องเล็กน้อยที่สร้างความรำคาญและฉันก็ไม่คิดอะไรเลยถ้าฉันไม่สามารถกำจัดมันได้ - ฉันชอบเป็นส่วนใหญ่M-x shellซึ่งปัญหานี้ไม่ได้เกิดขึ้น แต่มันทำให้ฉันรำคาญจริงๆที่ฉันไม่สามารถหาสาเหตุของปัญหานี้ได้แม้ว่าฉันจะพยายามแก้ไขข้อบกพร่องนั้นจริงๆ ฉันต้องบอกว่าความเข้าใจของฉันเกี่ยวกับอาคารค่อนข้าง จำกัด ดังนั้นฉันอาจจะพลาดจุดที่เห็นได้ชัดเจน ฉันใช้ OS X 10.10 Emacs ของฉันคือ 25.0.50 สร้างจากลำต้นด้วย Homebrew และไม่มีธงพิเศษ Zsh คือ 5.0.5 ซึ่งมาพร้อมกับ Yosemite แต่ปัญหายังเกิดขึ้นกับ 5.0.7 ที่ติดตั้งผ่าน …
10 ansi-term 

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