คำถามติดแท็ก hooks

ตะขอเป็นกลไกสำคัญในการปรับแต่ง Emacs เบ็ดเป็นตัวแปรเสียงกระเพื่อมซึ่งมีรายการฟังก์ชันที่จะเรียกใช้ในบางโอกาสที่กำหนดไว้อย่างชัดเจน

3
วิธีที่เหมาะสมในการเปิดใช้งานโหมดรอง
ฉันมีโหมดฟูและจะเปิดใช้งานโหมดบาร์เล็ก ๆ น้อย ๆสำหรับมัน ดังนั้นวิธีใดที่ใช้กันทั่วไปและเป็นที่นิยมมากกว่า? A (add-hook 'foo-mode-hook 'bar-minor-mode) B (add-hook 'foo-mode-hook (lambda () "Turn on `bar-minor-mode' mode." (bar-minor-mode 1))) C (defun bar-minor-mode-on () "Turn on `bar-minor-mode' mode." (interactive) (bar-minor-mode 1)) (add-hook 'foo-mode-hook 'bar-minor-mode-on) D •ตัวแปร C แต่ฟังก์ชั่นผลักไปที่ต้นน้ำ E •ตัวแปร C แต่ฟังก์ชั่นเก็บไว้ในสูตรของปลั๊กอิน
24 hooks  minor-mode 

1
อะไรคือความแตกต่างระหว่าง 'และ #' ที่ด้านหน้าของสัญลักษณ์?
ฉันใหม่สำหรับ Emacs นิดหน่อย เมื่อดูการกำหนดค่าบางอย่างฉันพบว่ามีคำสั่งสองประเภทใน "add-hook" (add-hook 'LaTeX-mode-hook #'LaTeX-math-mode) และ (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) สิ่งนี้ทำให้ฉันสับสนเป็นเวลานานและฉันไม่รู้วิธีค้นหา "#" "ใน google ... ขอบคุณ
22 elisp  hooks  functions  quote 

2
มีโหมดเติมย่อหน้าอัตโนมัติเต็มรูปแบบสำหรับการแสดงความคิดเห็นรหัสหรือไม่
ฉันกำลังมองหาโหมดย่อยเพื่อให้ย่อหน้าเต็มตลอดเวลาขณะพิมพ์ (คล้ายกับaggressive-indent-modeการเยื้อง) นอกจากนี้ยังต้องมีความฉลาดพอที่จะเติมความคิดเห็นเท่านั้น (และอาจมีสตริงขึ้นอยู่กับภาษา) บางสิ่งที่ฉันได้ลองคือ: auto-fill-mode เติมโดยอัตโนมัติในขณะที่คุณพิมพ์ย่อหน้าใหม่ แต่ไม่เติมเมื่อคุณแก้ไขย่อหน้า refill-mode ทำการเติมย่อหน้าอย่างต่อเนื่อง แต่มันพยายามที่จะใส่โค้ดเข้าไปในย่อหน้าเช่นเดียวกับความคิดเห็น ฉันพยายามเพิ่มfill-paragraphลงในafter-change-functionsตะขอ แต่มันไขสกรูขึ้นมาเพื่อเลิกทำและสิ่งอื่น ๆ อีกมากมาย มีความคิดที่ดีกว่านี้ไหม?

3
มีวิธีใดบ้างที่จะเรียกใช้ฟังก์ชั่น hook ได้เพียงครั้งเดียว?
บริบท ฉันใช้after-make-frame-functionsเบ็ดโหลดอย่างถูกต้องในรูปแบบนั้นกำหนดค่าไคลเอ็นต์ emacs / เซิร์ฟเวอร์ โดยเฉพาะนี่คือข้อมูลโค้ดที่ฉันใช้ในการสร้าง (ตามคำตอบ SOนี้): (if (daemonp) (add-hook 'after-make-frame-functions (lambda (frame) (select-frame frame) (load-theme 'monokai t) ;; setup the smart-mode-line and its theme (sml/setup))) (progn (load-theme 'monokai t) (sml/setup))) ปัญหา เมื่อมีemacsclient -c/tเซสชั่นจะเริ่มต้นเบ็ดจะถูกดำเนินการไม่เพียง แต่ในกรอบใหม่ แต่ในทุกกรอบที่มีอยู่ก่อนหน้า (อื่น ๆemacsclientครั้ง) และมันทำให้ผลภาพที่น่ารำคาญมาก (รูปแบบที่มีการโหลดอีกครั้งในเฟรมทุกคน) ที่แย่ยิ่งกว่านั้นในไคลเอนต์เครื่องเทอร์มินัลได้เปิดสีของชุดรูปแบบเรียบร้อยแล้ว เห็นได้ชัดว่าเกิดขึ้นเฉพาะในไคลเอนต์ emacs ที่เชื่อมต่อกับเซิร์ฟเวอร์ emacs เดียวกัน สาเหตุของพฤติกรรมนี้ชัดเจน hook ถูกเรียกใช้บนเซิร์ฟเวอร์และไคลเอ็นต์ทั้งหมดได้รับผลกระทบ …

2
เรียกใช้คำสั่งเมื่อเปิดไฟล์ประเภทไฟล์เฉพาะ
ฉันพยายามรับ lisp script เพื่อเรียกใช้คำสั่งบางอย่างสำหรับฉันเมื่อฉันเปิดไฟล์ประเภทไฟล์เฉพาะ ฉันรู้ว่าฉันกำลังทำงานในไฟล์ init ที่ถูกต้องเพราะถ้าฉันลบธีมออก emacs ไม่มีธีมเมื่อฉันเริ่มต้นทำงาน นี่คือสคริปต์ที่ฉันใช้ซึ่งใช้งานไม่ได้ (ไม่มีข้อผิดพลาดหรืออะไร): (defun my-project-hook (filename) (when (string= (file-name-extension filename) "ts") ((typescript-mode) (tss-setup-current-buffer)) ) ) (add-hook 'after-load-functions 'my-project-hook)

2
วิธีค้นหาลำดับคีย์คืออะไร
บางครั้งฉันสังเกตเห็นพฤติกรรมที่ไม่คาดคิดเมื่อแก้ไขข้อความ การขอความช่วยเหลือครั้งแรกของฉันมักจะใช้C-h kเพื่อค้นหาว่าฟังก์ชันใดที่ถูกเรียกโดยลำดับของคีย์ที่กำหนด อย่างไรก็ตามบางครั้งเอกสารประกอบจะขัดแย้งกับพฤติกรรมที่สังเกตได้ ในกรณีเหล่านี้ฉันมักจะคิดว่าแพ็กเกจอื่น ๆ บางส่วนได้เชื่อมโยงกับฟังก์ชั่นหรือลำดับของคีย์และกำลังแก้ไขพฤติกรรมของมัน ฉันจะหา ที่ ฟังก์ชั่น hooking เป็นลำดับสำคัญของฉันได้อย่างไร ตัวอย่างหนึ่งที่ฉันพบเมื่อเร็ว ๆ นี้คือฉันกด"คีย์และเครื่องหมายคำพูดถูกแทรกที่จุดเริ่มต้นและจุดสิ้นสุดของพื้นที่ที่ใช้งานอยู่ ฉันสงสัยว่านี่ไม่ใช่พฤติกรรมของ Emacs ที่เป็นค่าเริ่มต้นดังนั้นฉันจึงเคยC-h k "ตรวจสอบว่ามีการเรียกใช้ฟังก์ชันใดบ้าง describe-keyเอกสารบอกว่าฟังก์ชั่นself-insert-commandที่ถูกเรียกว่าซึ่งเป็นฟังก์ชั่น electric-pair-modeที่จะทำให้เรื่องยาวสั้นหลังจากที่จำนวนของการทดลองและข้อผิดพลาดบางอย่างผมก็สามารถที่จะตรวจสอบว่าพฤติกรรมที่เกิดจาก ในอนาคตมีวิธีที่เร็วกว่าที่จะมาถึงข้อสรุปนี้กว่าที่จะปิดแพคเกจที่น่าสงสัยทีละครั้งจนกว่าจะหาผู้กระทำผิด?
14 keymap  hooks 

2
ฉันควรรวมการเริ่มต้นที่ขี้เกียจที่ไหน?
ฉันต้องการเพิ่มคีย์เฉพาะการผูกกับโหมดลาเท็กซ์: (define-key latex-mode-map (kbd "<f6>") 'my-latex-defun) ในเวลาเดียวกันฉันต้องการตั้งค่าเฉพาะเมื่อโหลดโหมดเฉพาะ ดังนั้นฉันต้องการทราบว่ามีการตั้งค่า (แนวปฏิบัติที่ดีที่สุด) ระหว่างการใช้ hook ที่เหมาะสม ( latex-mode-hook) เพื่อให้บรรลุหรือใช้ clause (with-eval-after-load "tex-mode" ...เพื่อตัดคำจำกัดความการโยงคีย์ ฉันทดสอบทั้งคู่และทำงานได้ดี แต่ฉันสงสัยว่าอันไหนเป็นวิธีที่ถูกต้องที่จะทำ
13 init-file  hooks 

1
ลบ hooks สำหรับโหมดเฉพาะ
org-modeฉันต้องการลบช่องว่างต่อท้ายในเซฟโหมดยกเว้น ในตัวฉัน.emacsฉันมีบรรทัดต่อไปนี้: (add-hook 'before-save-hook 'delete-trailing-whitespace) ฉันใช้use-packageมาโครและพยายามเพิ่ม(remove-hook 'before-save-hook 'delete-trailing-whitespace)ลงใน:configบล็อกของฉันแต่นั่นเอาเบ็ดทั่วโลกออก ฉันจะลบมันโดยเฉพาะเพื่อได้org-modeอย่างไร
13 hooks 

3
before-save-hook สำหรับโหมด cc
ฉันต้องการปรับแต่งcc-modeเพื่อใช้งานฟังก์ชั่นก่อนบันทึก ทางออกหนึ่งคือการปรับเปลี่ยนcc-modekeymap เพื่อผูกC-x C-sกับฟังก์ชั่นที่ทำงานที่ฉันต้องการแล้วบันทึก คำถามของฉันคือมีเบ็ดที่ฉันสามารถปรับแต่งสำหรับนี้ เอกสาร CC เบ็ดไม่พูดถึงเฉพาะสำหรับbefore-save-hook cc-modeสิ่งนี้ควรทำผ่านเบ็ดได้อย่างไร? หรือฉันจะทำสิ่งนี้ผ่านได้defadviceอย่างไร จากการอ่านคู่มือวิธีเดียวที่ฉันเห็นคือการเปิดใช้งานคำแนะนำก่อนบันทึกแล้วปิดใช้งานหลังจากงานเสร็จ ฟังดูยุ่งยาก สิ่งที่เป็นวิธีการใช้สำนวนadvice?
13 hooks  cc-mode  advice 

1
รันสคริปต์ภายนอกเมื่อบันทึกเมื่ออยู่ในโหมดใดโหมดหนึ่ง?
เมื่อฉันเข้าorg-modeฉันต้องการให้ Emacs ใช้สคริปต์ทุบตีที่ฉันเขียนเมื่อใดก็ตามที่ฉันC-x sบันทึกเพื่อบันทึก สคริปต์จะซิงค์ไฟล์ที่ฉันบันทึกลงใน Raspberry Pi โดยอัตโนมัติ มันคาดว่าชื่อไฟล์เป็นอาร์กิวเมนต์ ฉันจะบอก Emac ให้เรียกใช้สคริปต์ภายนอกในorgไฟล์เมื่อฉันบันทึกได้อย่างไร

5
วิธีการเข้าสู่โหมดดูอย่างเดียวเมื่อเรียกดูซอร์สโค้ด Emacs จากความช่วยเหลือ?
เมื่อฉันเรียกดู Emacs ช่วยฟังก์ชั่นผ่านC-h fฉันมักจะมองเข้าไปในการใช้งาน Elisp / C ฉันต้องการป้อนview-modeอัตโนมัติเมื่อฉันเข้าถึงซอร์สโค้ดด้วยวิธีนี้เพื่อหลีกเลี่ยงการแก้ไขที่ไม่จำเป็น มีตะขอหรือฟังก์ชั่นที่ฉันสามารถแนะนำให้ทำสิ่งนี้ได้หรือไม่?

1
ความแตกต่างระหว่าง after-init-hook และ emacs-startup-hook คืออะไร
ดูเหมือนว่ามีหลาย hooks เกี่ยวกับการกระทำในการเริ่มต้น Emacs อย่างไรก็ตามฉันไม่แน่ใจว่าความแตกต่างของพวกเขาคืออะไรและ Googling สั้น ๆ ให้ข้อมูลเล็กน้อย มันเหมือนemacs-startup-hookถูกประหารชีวิตทันทีหลังจากที่ Emacs ถูกไฟไหม้ แต่ไม่จำเป็นต้องรอให้การเตรียมใช้งานเสร็จสิ้นหรือไม่
9 hooks 

1
เบ็ดคืออะไร
เพื่อชี้แจง ... ตัวอย่างเช่นในเอกสารนี้: เบ็ดเป็นตัวแปรเสียงกระเพื่อมซึ่งถือรายการของฟังก์ชั่นที่จะเรียกในบางโอกาสที่กำหนดไว้ (นี่เรียกว่าการเรียกใช้ hook) ฟังก์ชั่นแต่ละอย่างในรายการเรียกว่าฟังก์ชั่น hook ของ hook ตัวอย่างเช่น hook kill-emacs-hookรันก่อนออกจาก Emacs ... ฉันคิดว่ามันกำลังพูดว่ามีตัวแปร (สัญลักษณ์) ชื่อkill-emacs-hookที่แสดงถึงรายการชุดของ "ฟังก์ชั่นเบ็ด" ที่จะทำงานเมื่อkill-emacs-hookมีการประเมินผลดังนั้นการปฏิบัติหน้าที่เหล่านั้น แก้ไข? แล้วก็ (add-hook 'text-mode-hook 'auto-fill-mode) กำลังเพิ่มauto-fill-modeในรายการที่ระบุโดยtext-mode-hookนอกเหนือจากสิ่งที่มีอยู่แล้ว ดี. ตอนนี้ (defcustom text-mode-hook nil "Normal hook run when entering Text mode and many related modes." :type 'hook :options '(turn-on-auto-fill flyspell-mode) :group 'wp) text-mode-hookที่ดูเหมือนว่าเรามีทั้งการสร้างหรือการเปลี่ยนแปลง …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.