Emacs

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

5
วิธีในการแสดงข้อความแตกต่างกันอย่างสงบเสงี่ยม?
ฉันกำลังเขียนส่วนขยาย emacs สำหรับใช้กับการรู้จำเสียงและฉันกำลังมองหาความช่วยเหลือเกี่ยวกับคุณลักษณะเฉพาะ คำบางคำที่ตัวจดจำเสียงพูด (Dragon) รู้จำได้ไม่ดีอย่างต่อเนื่อง - มันไม่สำคัญว่าคุณจะฝึกมันกี่ครั้งก็ตามมันจะดูดที่จำคำบางคำได้ ในเวลาเดียวกันโดยทั่วไปเมื่อคุณเขียนหัวข้อหรือเมื่อเขียนโปรแกรมคุณจะใช้คำเดียวกันหลายครั้งซ้ำแล้วซ้ำอีก ดังนั้นฉันจึงเขียนโหมดที่ใช้การซ้อนทับเพื่อเปลี่ยนวิธีการแสดงคำในบัฟเฟอร์ มันใช้ตัวอักษรสุ่มในคำขีดเส้นใต้ในสีแบบสุ่มและวางเครื่องหมายกำกับการออกเสียงแบบสุ่ม (สำเนียงเครื่องหมายบนอากาศ ฯลฯ ) เหนือส่วนบนของมัน นี่คือภาพหน้าจอ (คุณอาจต้องซูมเพื่อดูเครื่องหมาย / ขีดเส้นใต้): จากนั้นคุณสามารถพูดว่า "ผมสีม่วง p" และมันจะมองหาคำที่มีสีม่วงขีดเส้นใต้ภายใต้ 'a' ที่มีเครื่องหมายกำกับออกเสียงที่ดูเหมือนผมและพิมพ์คำนั้นสำหรับคุณ ดังนั้นในภาพหน้าจอด้านบนที่บอกว่าจะทำให้ emacs พิมพ์ "regexp-quote" ให้คุณ แนวคิดนี้ช่วยให้คุณสามารถอ้างอิงคำใด ๆ ที่คุณใช้ไปแล้วบนหน้าจอโดยใช้ชุดคำที่ จำกัด ซึ่งตัวจดจำจะจดจำได้ดีอยู่เสมอ มันใช้งานได้ดียกเว้นในบางครั้งอาจมีการชนกัน เพื่อให้ฉันสามารถเรียนรู้ที่จะอ้างอิงคำอย่างเดียวกับที่ฉันใช้ bytes จาก md5 hash ของคำแทนที่จะ(random)เป็นอัลกอริธึมหรือกำหนดการเปลี่ยนแปลงที่หลีกเลี่ยงการชน ฉันพบเพียง 6 สีที่แยกแยะได้ง่าย (มันยากเมื่อขีดเส้นใต้มีความกว้างเพียงหนึ่งตัวอักษรและหนาพิกเซลเดียว) และ 3 เครื่องหมายที่แยกได้ง่ายสามารถแยกแยะได้ง่าย (ง่ายต่อการแยกออกจากกัน …

2
เป็นไปได้ไหมที่จะทำให้พื้นที่ echo ติดกับเคอร์เซอร์?
ปัญหา: ฉันพบว่ามันเหนื่อยมากที่จะขยับดวงตาของฉันขึ้นและลงจากตำแหน่งที่เคอร์เซอร์อยู่ที่บริเวณสะท้อนเสียงด้านล่าง คำถาม: เป็นไปได้หรือไม่ที่จะทำให้พื้นที่ echo นั้นถูกจัดสรรแบบไดนามิกใกล้กับเคอร์เซอร์ของฉันเช่นคำแนะนำเครื่องมือ? ฉันค้นหาแพ็คเกจ แต่ไม่สามารถค้นหาได้ ฉันไม่เชื่อว่ามันเป็นความคิดใหม่และบางคนต้องทำมัน
12 echo-area 

2
ฉันจะดูลำดับชั้นของคำสำคัญสิ่งที่ต้องทำในโหมดวาระองค์กรได้อย่างไร
ฉันมีงานหลากหลาย (facile) ในลำดับชั้นบางอย่าง * TODO Make a pizza ** TODO Get cheese *** TODO Buy a cow ** TODO Get tomatoes *** TODO Grow tomatoes **** TODO Buy tomatoes ** TODO Buy oven *** TODO Win Lottery **** TODO Buy Lottery ticket หากฉันดูสิ่งเหล่านี้ด้วยวาระการประชุม org พวกเขาจะแสดงในลักษณะแบน: .TODO: TODO Make a pizza …

1
อัปเดตไดเรกทอรีเริ่มต้นโดยอัตโนมัติเมื่อ PWD เปลี่ยนแปลงในโหมดเชลล์และโหมดคำศัพท์
มีตัวเลือกใด ๆ หรือแพคเกจซึ่งสาเหตุที่default-directoryได้รับการปรับปรุงถ้าไดเรกทอรีการทำงานที่มีการเปลี่ยนแปลงในshell-modeและterm-mode? cdนั่นคือเมื่อใช้แต่การแก้ปัญหาจะต้องแข็งแกร่งกว่าเพียงแค่มองหาคำสั่งนี้และอาจจะมีคนอื่น ๆ อีกสองสามคน - มันควรตรวจสอบคุณค่าของ$PWDคำสั่งทุกคำสั่งหลังจากนั้นฉันคิดว่า ที่สำคัญกว่านั้นก็ควรจะทำงานเมื่อเชื่อมต่อกับเครื่องระยะไกลจากภายในshell-modeหรือterm-modeบัฟเฟอร์ซึ่งถูกสร้างขึ้นครั้งแรกด้วยdefault-directoryการเป็นไดเรกทอรีท้องถิ่น นั่นเป็นคุณสมบัติที่ฉันต้องการจริงๆ: สามารถบอกทางโปรแกรมว่าคำสั่งที่ฉันพิมพ์ลงในเทอร์มินัลนั้นรันบนเครื่องระยะไกลหรือไม่ ฉันต้องการได้รับข้อมูลในรูปแบบของการตั้งค่าdefault-directoryและรูปแบบที่ถูกต้องหากมีวิธีการที่จะได้รับแล้วเครื่องมือในการทำเช่นนี้จะทำงานในพื้นที่ตามที่อธิบายไว้ข้างต้น

1
ปิดใช้งานโหมดรองในบัฟเฟอร์ที่เปิดอยู่ทั้งหมด
บ่อยครั้งที่ฉันเปิดบัฟเฟอร์จำนวนมากและไม่ว่าด้วยเหตุผลใดฉันไม่ต้องการใช้โหมดย่อยอีกต่อไปกับพวกเขา ขณะนี้มีวิธีที่มีอยู่แล้วภายในเพื่อปิดใช้งานโหมดย่อยเฉพาะสำหรับบัฟเฟอร์ที่เปิดอยู่ทั้งหมดหรือต้องการการเขียนฟังก์ชัน elisp แบบกำหนดเองหรือไม่

1
การเยื้องอัตโนมัติ \ if คำสั่งที่มี AUCTeX
AUCTeXพฤติกรรมปัจจุบันของtexรหัสดั้งเดิมที่เกี่ยวข้องกับคำสั่งif -like คือการเยื้องคำสั่งเงื่อนไขที่ระดับเดียวกันกับสภาพแวดล้อม เช่นรหัสเช่น \if@sometoggle% \dosomething% \else% \doanotherthing% \fi% ปรากฏเป็นบล็อกข้อความขนาดใหญ่ ฉันต้องการทำAUCTeXตัวอย่างโค้ดดังต่อไปนี้: \if@sometoggle% \dosomething% \else% \doanotherthing% \fi% เป็นไปได้ไหม

1
แสดงช่วงเวลาว่างในวาระการประชุมของโหมดองค์กร
ฉันต้องการทำให้ง่ายต่อการค้นหาว่ามีช่วงเวลาใดบ้างที่อยู่ในวาระการประชุมโหมดองค์กรของฉันฟรี ตัวอย่างเช่นหากฉันมีการนัดหมายสองครั้งช่วงเวลา 9:30 น. - 10:30 น. และอีก 11:15 น. - 12.30 น. ฉันต้องการดูโดยเร็วว่าช่วงเวลา 10:30 น. - 11:30 น. บล็อกฟรี กล่าวอีกนัยหนึ่งฉันต้องการแยกความแตกต่างของเวลาว่างได้อย่างง่ายดายเหมือนในวาระกราฟิกเช่น Google ปฏิทิน มีวิธีทำให้ช่วงเวลาว่างเปล่ามองเห็นได้ง่ายหรือไม่? บางทีสีที่ว่างเปล่าบล็อกที่มีความยาวเกินจำนวนนาทีที่กำหนด?

3
กำหนดขอบเขตของบัฟเฟอร์ด้วยโหมดหลักอื่น
ฉันมีบัฟเฟอร์ที่แสดงเอกสารสำหรับโมดูล Ansible บัฟเฟอร์นี้มีโหมดหลักของตัวเองซึ่งมีเนื้อหามาตรฐานทั้งหมด โดยเฉพาะอย่างยิ่งมัน fontifies บัฟเฟอร์เพื่อไฮไลท์มาร์กอัปแบบอินไลน์ตัวเลือกส่วนอื่น ๆ M-x manทั้งหมดในทุกมันสวยคล้ายกับ ที่ด้านล่างของเอกสารมักจะมีตัวอย่างรหัสใน YAML ฉันต้องการที่จะทำให้แบบอักษรเหล่านี้เช่นกัน ฉันสามารถเพิ่มคำสำคัญแบบอักษรของตัวเองล็อคสำหรับ YAML แน่นอน แต่ฉันอยากจะใช้แบบอักษรของโหมด YAML อีกครั้ง ฉันจะทำสิ่งนั้นได้อย่างไร โดยเฉพาะฉันจะใช้โหมดหลักที่แตกต่างกันเพื่อกำหนดขอบเขตของบัฟเฟอร์ได้อย่างไร โปรดทราบว่าโหมด YAML ไม่จำเป็นต้องใช้งานในภูมิภาคนี้ บัฟเฟอร์ทั้งหมดเป็นเพียงบัฟเฟอร์การแสดงผลแบบพาสซีฟและไม่ต้องการแก้ไข ฉันต้องการเพียงการสร้างแบบอักษรที่เหมือนกับว่าโหมด YAML เปิดใช้งานในภูมิภาคนั้น ฉันคิดว่าฉันสามารถคัดลอกขอบเขตของบัฟเฟอร์ไปยังบัฟเฟอร์ชั่วคราวเปิดใช้งานโหมด YAML กำหนดบัฟเฟอร์ของแบบอักษรและคัดลอกคุณสมบัติข้อความทั้งหมดไป มันจะใช้ได้ไหม ถ้าเป็นเช่นนั้นฉันจะคัดลอกคุณสมบัติข้อความและคุณสมบัติที่เกี่ยวข้องที่จะคัดลอกได้อย่างไร หรือมีวิธีการที่ดีกว่า
12 font-lock  region 

2
โหมด org ใช้คีย์ลูกศร
การกำหนดค่าการกดปุ่มโหมดโหมดเริ่มต้นคือการใช้ปุ่มลูกศรสำหรับฟังก์ชั่นคอมมอนส์ มีใคร remaned การตั้งค่าโหมด org ของพวกเขาเพื่อหลีกเลี่ยงปุ่มลูกศรทั้งหมด? กรุณาแบ่งปัน.
12 org-mode  keymap 

3
ฉันจะตั้งค่าสีขอบให้เป็นสีพื้นหลังได้อย่างไร
bzg-big-fringe-modeผมใช้โหมดฟุ้งซ่านฟรีที่ใช้ขอบยักษ์ไปยังศูนย์บัฟเฟอร์ที่เรียกว่า ปัญหาคือขอบเหล่านี้มักจะมีสีที่แตกต่างจากพื้นหลังซึ่งให้เอฟเฟกต์น่าเกลียด (ดูภาพที่ท้าย) ฉันไม่มีปัญหาในการแก้ไขด้วยตนเองโดยตั้งค่าสีขอบเป็นสีพื้นหลังเช่น: (set-face-attribute 'fringe nil :background "#3F3F3F" :foreground "#3F3F3F") ปัญหาคือเมื่อเปลี่ยนชุดรูปแบบสีขอบจะเป็นสีเทาแม้ว่าจะไม่เหมาะสมสำหรับชุดรูปแบบใหม่ มีวิธีการตั้งค่าขอบสีโปรแกรมพื้นหลังโดยทางโปรแกรมหรือไม่? ฉันคิดว่าฉันต้องการสองสิ่ง: ความสามารถในการตั้งค่าสีพื้นหลังของขอบเป็นสีพื้นหลังเริ่มต้น ฟังก์ชั่นที่ติดกับการเปลี่ยนธีมและนั่นคือ 1. ด้านบน ฉันคิดว่าฉันควรจะสามารถทำ 2) แม้ว่าฉันจะไม่มีทักษะ emacs แต่ฉันจะทำ 1) หรือเป็นความคิดที่ไม่ดีด้วยเหตุผลบางอย่าง? ถ้าเป็นเช่นนั้นวิธีการที่ดีกว่าจะมีลักษณะอย่างไร
12 fringe  colors 

1
ข้อผิดพลาดที่อาจเกิดขึ้นจากการเปิดใช้งานการเชื่อมคำศัพท์สำหรับบัฟเฟอร์คืออะไร?
สิ่งนี้ได้รับแรงบันดาลใจจากการสนทนาของคำศัพท์ที่มีผลผูกพันและศัพท์ให้ในคำถามนี้ เนื่องจากการเชื่อมคำศัพท์ช่วยให้คุณมีความสามารถในการปิดที่มีประโยชน์ซึ่งผู้คนอาจคุ้นเคยในภาษาอื่นเช่น JavaScript ทำไมคุณไม่เปิดใช้งานตลอดเวลา การใช้ความเข้ากันได้แบบย้อนหลังกับ Emacsen รุ่นเก่านั้นไม่ได้เป็นปัญหาที่คุณควรมองหาหากเปิดใช้งานในบัฟเฟอร์รหัสดั้งเดิม

2
จะวาง TODO ใบหน้าในไฟล์ได้อย่างไร?
ฉันได้กำหนดสถานะสิ่งที่ต้องทำต่อไปนี้ในไฟล์โหมด org: #+SEQ_TODO: TODO(t) WAIT(w) | DONE(d) และฉันได้ปรับแต่งสีสำหรับสิ่งที่ต้องทำ: ซ่อนหน้าคำหลักขององค์กรสิ่งที่ต้องทำ: ข้อเสียของ INS DEL: คำสำคัญ: TODO หน้า: ค่าเมนูสี: สีแดง ข้อเสียของ INS DEL: คำหลัก: WAIT หน้า: ค่าเมนูสี: ส้ม ข้อเสียของ INS DEL: คำค้นหา: DONE หน้า: ค่าเมนูสี: สีเขียว INS แต่ฉันต้องการปรับแต่งสีของสถานะสิ่งที่ต้องทำในที่เดียวกันซึ่งฉันได้กำหนดไว้: ในไฟล์ สิ่งนี้สามารถทำได้?
12 org-mode 

1
วิธีรับ Rainbow-delimiters / rainbow-block เพื่อไฮไลต์คณิตศาสตร์ในบรรทัดในสมการ LaTeX
ฉันใช้สเปซแมคกับ AUCTeX สำหรับการแก้ไข LaTeX และต้องการสร้างตัวคั่นแบบสายรุ้งและ / หรือบล็อกสีรุ้งให้เน้นสมการคณิตศาสตร์ LaTeX น่าเสียดายที่นี่ใช้งานได้เพียงบางส่วนนั่นคือสมการบางส่วนจะถูกเน้นสี ในสกรีนช็อตตัวอย่างคณิตศาสตร์ในบรรทัด$จะไม่ถูกเน้นในขณะที่ส่วนที่เหลือรวมถึงคณิตศาสตร์ในบรรทัดที่อยู่ใน\(...\)นั้น เมื่อrainbow-blocksมันแย่ลงบางครั้งมันจะทำงานในที่เดียวของเอกสารและบางครั้งจะไม่ทำงานโดยไม่คำนึงถึงขอบเขต ถาม: มีใครรู้บ้างไหมว่าทำไมสิ่งนี้ถึงเกิดขึ้นหรือจะrainbow-blocksทำงานกับคณิตศาสตร์ในสายงานใน LaTeX ได้หรือไม่? มีทางเลือกอื่น ๆ ในการทำงานหรือไม่?

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

3
อัปเดตแพคเกจโดยอัตโนมัติและลบเวอร์ชันเก่า
ฉันเป็นคนบังคับเล็กน้อยเกี่ยวกับการอัปเดตแพ็คเกจสำหรับทุกระบบของฉันดังนั้นฉันจึงพบว่าตัวเองกำลังทำงานlist-packages-> U-> x-> y-> yค่อนข้างมากทุกวันเพื่ออัปเดตแพ็คเกจของฉันและลบเวอร์ชันเก่าเมื่อการอัปเดตเสร็จสมบูรณ์ ฉันจะทำให้กระบวนการนี้เป็นแบบอัตโนมัติได้อย่างน้อยที่สุดฉันจึงต้องเรียกใช้ฟังก์ชันเดียวเท่านั้นเพื่ออัปเดตรวบรวมและลบแพ็คเกจของฉัน หรือมีเหตุผลบางอย่างที่ฉันอาจไม่ต้องการทำเช่นนั้น?
12 package 

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