Emacs

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

1
จะใช้ SLIME เป็นพร็อกซีระหว่างโปรแกรม Common Lisp กับ Emacs Lisp ได้อย่างไร
ฉันกำลังทำสิ่งต่อไปนี้: ฉันมีโปรแกรมที่เขียนด้วย Common LISP ซึ่งฉันต้องการสื่อสารกับ Emacs โปรแกรมเกี่ยวข้องกับการแยกวิเคราะห์ภาษาธรรมชาติดังนั้นสิ่งที่ฉันจำเป็นต้องเข้าถึงใน Emacs จะเป็นเนื้อหาของบัฟเฟอร์และการแยกวิเคราะห์เบื้องต้นขั้นต่ำที่จำเป็นในการสร้างข้อความเพื่อส่งไปยังโปรแกรม Common LISP จากนั้นโปรแกรม Common Lisp จะประมวลผลข้อความและตอบกลับไปยังโปรแกรม Emacs Lisp เพื่อที่จะแสดงผลลัพธ์ ฉันเข้าใจว่า SLIME จะเป็นเครื่องมือที่ดีที่จะใช้เพื่อให้บรรลุเป้าหมายส่วนใหญ่เพราะมันทำไปแล้วส่วนใหญ่ แต่เมื่อดูที่เอกสารฉันพบว่ามันเป็น "เอกสารคู่มือผู้ใช้" ไม่ใช่ "เอกสารสำหรับนักพัฒนา" โดยพื้นฐานแล้วฉันต้องการที่จะรู้ว่าอะไรคือขั้นต่ำสุดที่ฉันสามารถใช้กับ Emacs Lisp เพื่อให้การสื่อสารดำเนินไปได้ (แน่นอนว่าฉันไม่ต้องการการวิปัสสนาหรือ REPL ในกรณีนี้สิ่งที่ฉันต้องการคือการส่งข้อความไปและ จากโปรแกรมของฉันทำงานใน SWANK)

1
ฉันจะสร้าง regexp แบบไดนามิกด้วย rx ได้อย่างไร
ฉันต้องการใช้rxในการสร้างการแสดงออกปกติด้วยค่ารันไทม์ ขณะนี้ฉันกำลังทำสิ่งนี้: (setq strings '("foo" "bar" "baz")) (eval `(rx symbol-start (or ,@strings) symbol-end)) evalแต่ผมอยากจะหลีกเลี่ยงการใช้ ฉันได้พบrx-to-stringแต่มันไม่ชัดเจนสิ่งที่ฉันควรเขียนแบบฟอร์ม: ;; error: Unknown rx form `symbol-start (rx-to-string '(symbol-start (or ,@strings) symbol-end)) ฉันจะสร้างการrxแสดงออกที่รันไทม์ได้อย่างไร

2
มีแพ็คเกจหรือโหมดจัดตำแหน่งอัตโนมัติสำหรับ Emacs หรือไม่
มีบางครั้งที่ฉันกำลังแก้ไขไฟล์ (ตัวอย่างหุ่นกระบอก) ที่ฉันต้องการจัดเรียงเนื้อหาบัฟเฟอร์ได้ทันที ตัวอย่างเช่นฉันรู้ว่าฉันสามารถใช้align-regexpหรือalignจัดรหัสเช่นนี้ตราบใดที่ฉันเลือกไว้: # M-x align-regexp "=>" will line everything up nicely file { "/etc/foo": ensure => present, mode => "0666", source => "puppet:///modules/example/foo", } แต่สิ่งที่ฉันต้องการจริงๆก็คือสิ่งนี้เกิดขึ้นได้ทันทีโดยไม่ต้องเลือกภูมิภาคหรือบัฟเฟอร์ทั้งหมด มีแพ็กเกจหรือโหมดที่จะทำสิ่งนี้หรือเป็นสิ่งที่ต้องสร้างในโหมดที่ฉันสนใจ แก้ไข:ฉันถามเกี่ยวกับ Puppet และ CFEngine เพราะนั่นคือสิ่งที่ฉันรหัสในวันนี้และฉันมีการตั้งค่าที่แข็งแกร่งสำหรับข้อความชิด อย่างไรก็ตามฉันก็อยากรู้อยากเห็น (และไม่ได้แสดงอย่างนี้) ที่จะรู้ว่าการจัดตำแหน่ง on-the-fly เป็นคุณสมบัติที่พบบ่อยในโหมด Emacs (ส่วนใหญ่ในโหมดสำหรับภาษาการเขียนโปรแกรม) หรือถ้าคนส่วนใหญ่จัดเรียงเมื่อบันทึกหรือบาง จุดอื่น ๆ
15 align 

2
Emacs ไม่รู้จัก Shift + Up ในเทอร์มินัล
บ่อยครั้งที่ฉันใช้Shift+ Up/Downเพื่อเลือกภูมิภาคใน Emacs มันทำงานได้ดีในโหมด GUI แต่เมื่อemacsถูกเรียกใช้ด้วย-nwตัวเลือกฉันสามารถเลือกบรรทัดด้วยShift+ Downเท่านั้น Shift+ Upไม่ทำงานผมได้รับข้อความแสดงข้อผิดพลาดใน minibuffer นี้: <select> is undefined ฉันจะแก้ปัญหานี้ได้อย่างไร

1
รับเนื้อหาของบัฟเฟอร์
ดังนั้นbuffer-stringได้รับเนื้อหาของบัฟเฟอร์ปัจจุบัน แต่ไม่อนุญาตให้ระบุบัฟเฟอร์อื่น ฉันจะหลีกเลี่ยงสิ่งนั้นได้อย่างไร ฉันต้องการบางสิ่งบางอย่างsave-window-excursionเพื่อให้มันทำงานได้หรือไม่

2
ทำความสะอาดช่องว่างบนบรรทัดที่สัมผัสเท่านั้น
สำหรับโครงการส่วนใหญ่ผมทำงานผมใช้ในการเรียกใช้before-save-hook whitespace-cleanupนี่เป็นเรื่องปกติเมื่อทุกคนในทีมล้างพื้นที่ของพวกเขา แต่บางครั้งฉันมีส่วนร่วมในโครงการที่ดำเนินการอยู่แล้วไฟล์ส่วนใหญ่จะเกลื่อนไปด้วยสีขาว ขณะนี้ฉันเพิ่งปิดเบ็ดประหยัดและเพิ่มส่วนแบ่งของฉันของพื้นที่ แต่นึกคิดฉันต้องการ diffs ของฉันจะสะอาดส่งเสียงดังเอี้ย .. มีแพ็คเกจใดบ้างที่มีเพียงช่องว่างการล้างข้อมูลบนบรรทัดที่ฉันสัมผัส

2
การพับโค้ดที่สามารถดำเนินการได้ใน Emacs fringe
ฉันต้องการกำหนดค่าขอบ Emacs ของฉันเพื่อแสดงส่วนการพับโค้ด ตัวอย่างเช่น BBEdit บน Mac จะแสดงสิ่งต่อไปนี้เมื่อแก้ไขไฟล์ JSON: การทำเครื่องหมายด้วยตนเองนั้นสามารถทำได้: การคลิกที่เครื่องหมายจะขยายหรือยุบส่วนรหัสที่เกี่ยวข้อง เมื่อเอกสารไม่มีโหมดที่รองรับการพับรหัสขอบจะไม่ปรากฏขึ้น เป็นไปได้ไหมที่จะขยายขีดความสามารถของ Emacs ในลักษณะดังกล่าว?

2
ฉันจะทดสอบและใช้นิพจน์ปกติของ Perl แบบโต้ตอบได้อย่างไร
สมมติว่าฉันมีบัฟเฟอร์พร้อมข้อความ ฉันต้องการทดสอบการแสดงออกปกติ (ประเภท Perl นึกคิด) กับบัฟเฟอร์ของฉันและมี Emacs เน้นการแข่งขันในนั้น ตัวอย่างเช่น regexp ต่อไปนี้ ( นำมาจาก Wikipedia ): (?<=\.) {2,}(?=[A-Z]) จะจับคู่ดังต่อไปนี้ในข้อความต่อไปนี้: การแสดงออกปกตินี้โดยเฉพาะอย่างยิ่งการจับคู่อย่างน้อยสองช่องว่างที่เกิดขึ้นหลังจากระยะเวลา(.)และก่อนที่ตัวอักษรตัวพิมพ์ใหญ่ Emacs จัดเตรียมmatcher นิพจน์ปกติเชิงโต้ตอบสำหรับนิพจน์ปกติของPerlหรือไม่ หากคำตอบของคำตอบคือไม่ใช่: มีเหตุผลที่สนับสนุนพื้นเมืองของการแสดงออกปกติPerlไม่ได้ (เคย) พิจารณาใน Emacs? (พิจารณาว่าเป็นมาตรฐานที่รู้จักกันดีใน Unix / Linux) วิธีการหนึ่งสามารถดำเนินการเกี่ยวกับการสร้างหนึ่ง matcher Perl regexp เช่น? (อาจจะเรียก Perl ภายใต้ประทุนหรือก่อนการแปลง regexp Perl เป็นตัวแปรที่สนับสนุน?)

6
วิธีลบสองสาม n ตัวแรกของทุกบรรทัด?
ฉันเพิ่งถาม: จะเพิ่มคำนำหน้าให้กับทุกบรรทัดได้อย่างไร ดังนั้นไปจากรหัสด้านล่าง: I said Hello I said There I said I am some code ไปที่รหัสเช่น: Hello There I am some code ตอนนี้ฉันจะลบจำนวนอักขระจากบรรทัดได้อย่างไร

3
DREET หายไปจาก MELPA
ฉันกำลังพยายามติดตั้ง + ที่น่าเบื่อจาก MELPA แต่ดูเหมือนว่าจะไม่มีอยู่ในรายการอีกต่อไป ฉันได้ตรวจสอบที่นี่: https://melpa.org/ เป็นเรื่องปกติหรือไม่

2
ฉันจะตั้งค่าตัวแปรโลคัลไดเร็กทอรีได้อย่างไรเมื่อเทียบกับตำแหน่งไฟล์. dir-locals.el
ฉันมักจะพบว่าตัวเองอยู่ในสถานการณ์ที่ฉันบอกให้ใส่เส้นทางญาติเป็นตัวแปรไดเรกทอรีท้องถิ่น ยกตัวอย่างเช่นCMake-IDE 's และcmake-ide-project-dir cmake-ide-build-dirแน่นอนว่านี่ไม่ใช่พกพามาก ดังนั้นแทนที่จะ .dir-locals.el: ((nil . ((cmake-ide-project-dir . "/home/user/code/project")))) ฉันต้องการบางสิ่งบางอย่าง ((nil . ((cmake-ide-project-dir . directory-of-current-dir-locals-file)))) ฉันจะกำหนดตัวแปรเช่นนี้ได้directory-of-current-dir-locals-fileอย่างไร? และวิธีการที่ฉันจะตั้งค่าสำหรับตัวอย่างcmake-ide-build-dirซึ่งเป็นปกติ(concat directory-of-current-dir-locals-file "build")?

3
นำทางด้วยการเยื้อง
ฉันต้องการนำทางระหว่างบรรทัดของไฟล์ตามการเยื้อง ไฟล์ถูกจัดโครงสร้างโดยการเยื้อง: บรรทัดที่เยื้องกว่าบรรทัดก่อนหน้าคือชายด์ของบรรทัดก่อนหน้าบรรทัดที่มีการเยื้องเดียวกันกับบรรทัดก่อนหน้าคือพี่น้อง ฉันกำลังมองหาสามคำสั่งเป็นส่วนใหญ่: ย้ายไปยังพี่น้องถัดไปเช่นบรรทัดถัดไปที่มีการเยื้องเดียวกันข้ามบรรทัดที่เยื้องมากกว่า แต่ไม่ข้ามบรรทัดที่เยื้องน้อยลง ย้ายไปยังพี่น้องก่อนหน้านั่นคือสิ่งเดียวกันในทิศทางอื่น ย้ายไปที่พาเรนต์เช่นไปยังบรรทัดก่อนหน้าโดยมีการย่อหน้าที่น้อยกว่า ตำแหน่งคอลัมน์ของจุดไม่ควรเปลี่ยนแปลง เหล่านี้เป็น analogs ข้อมูลเยื้องโครงสร้างการforward-sexp, backward-sexpและbackward-up-listข้อมูล sexp โครงสร้าง การเยื้องสอดคล้องกับโครงสร้างของโปรแกรมในภาษาเช่น Haskell และ Python ฟังก์ชั่นเหล่านี้มีประโยชน์อย่างยิ่งในบริบทนี้ แต่ฉันไม่ได้มองหาโหมดเฉพาะใด ๆ (กรณีการใช้งานหลักของฉันคือข้อมูลที่มีโครงสร้างความตั้งใจภายในรูปแบบไฟล์อื่น) ระดับการเยื้องสีสามารถช่วยนำทางด้วยตนเองด้วยUp/ Downแต่ฉันต้องการบางสิ่งบางอย่างโดยอัตโนมัติ คำถามผู้ใช้ระดับสูงนี้คล้ายกัน แต่มีข้อกำหนดน้อยกว่าและไม่มีคำตอบที่ตรงกับความต้องการของฉัน

3
การส่งออกอักขระ Unicode ไปยัง pdf โดยใช้ Latex จากโหมดองค์กร
สวัสดีคนดี ๆ ของ Emacs! ฉันมีปัญหาในการส่งสัญลักษณ์ทางคณิตศาสตร์ unicode จาก buffer (โหมด org) ไปยังไฟล์ pdf 1. คำอธิบายปัญหา: สัญลักษณ์ถูกแทรกลงในบัฟเฟอร์เป็นอักขระ Unicode (ผ่านวิธีป้อนข้อมูล TEXหรือ บริษัท คณิตศาสตร์ ) นี่คือการสาธิตซอร์สโค้ด: #+TITLE: Unicode characters export test #+AUThor: #+date: Unicode characters: ℝ ℤ ℕ ⇒ ∈ ∀ Same symbols in latex format: $$\Bbb{R} \Bbb{Z} \Bbb{N} \Rightarrow \in \forall$$ ไฟล์. tex …

2
Magit ช้ามากใน Windows ฉันจะเพิ่มประสิทธิภาพได้อย่างไร
ฉันถูกบังคับให้ใช้ Windows 10 สำหรับโครงการ ใช่ฉันต้องการใช้ GNU / Linux เพื่อรักษาสติของฉันฉันพยายามที่จะถือว่า Windows เป็น bootloader สำหรับ Emacs :) น่าเสียดายที่ Magit (หนึ่งในส่วนที่ชื่นชอบของ Emacs ซึ่งประกอบขึ้นด้วยการขาดบรรทัดคำสั่งที่ดีใน Windows) ก็ช้าเหลือเกิน ฉันมี SSD, RAM 16 GB และ i7 แบบ quad-core แต่ใช้เวลาแปดวินาทีในการดำเนินการmagit-statusบนพื้นที่เก็บข้อมูลขนาดเล็ก จากนั้นเมื่อฉันต้องการที่จะทำการเปลี่ยนแปลงอีกก็จะใช้เวลาประมาณ 5 วินาทีต่อไฟล์ นี่คือสิ่งที่ฉันได้ลอง: $ git config --global core.preloadindex true $ git config --global core.fscache true $ git …

2
เอาต์พุตบล็อกซอร์สของโหมดองค์กร Python อยู่เสมอ ': ไม่มี'
นี่คือบล็อกแหล่งที่มาของฉัน: #+BEGIN_SRC python print "hello" #+END_SRC ผลลัพธ์อยู่เสมอ: #+RESULTS: : None นี่คือการกำหนดค่าองค์กรของฉัน: (org-babel-do-load-languages 'org-babel-load-languages '((python . t) (C . t) (calc . t) (latex . t) (java . t) (ruby . t) (scheme . t) (sh . t) (sqlite . t) (js . t))) Python อยู่ใน PATH และสามารถใช้งานได้ผ่านทางเทอร์มินัล Emacs-lisp SRC blocks …

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