Emacs

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

2
วิธีรับไวยากรณ์ที่เน้นความหมายบน emacs สำหรับรหัส C / C ++
ฉันยังใหม่กับ emacs และการเขียนโปรแกรมโดยทั่วไปดังนั้นโปรดอดทนกับฉัน ฉันพยายามใช้ emacs เป็น C / C ++ IDE ของฉันและฉันสังเกตเห็นว่าในโหมด CC ตัวแปร / ฟังก์ชั่นดูเหมือนจะถูกเน้นเฉพาะในระหว่างการประกาศ คำถามของฉันคือ เป็นไปได้หรือไม่ที่จะเน้นตัวแปรและฟังก์ชั่นในไฟล์ cpp ทั้งหมด ถ้าเป็นไปได้สิ่งที่ต้องเพิ่มในไฟล์. emacs ขอบคุณ

3
Emacs จัดการอย่างไรเพื่อเริ่มต้นทันทีด้วยไฟล์ el หลายไฟล์?
ดังที่ Emacs'er ทุกคนจะรู้ฉันกำลังเผชิญกับการกำหนดค่า dot-Emacs ที่กว้างขวางของฉัน แพคเกจของฉันทั้งหมดอยู่ภายในภาชนะบรรจุของuse-packageและฉัน bytecompiled ทั้งหมดของฉัน.el-Files แม้ว่าจะมี Emacs ก็เริ่มใน 6.4 วินาทีจากนั้นโหลดแพ็กเกจที่เหลือ (ประมาณ 40 แพ็กเกจ) หลังจากนั้น ฉันกำลังคิดหาวิธีอื่นในการแก้ปัญหาเวลาเริ่มต้นที่ยาวนานจากนั้นฉันก็สังเกตเห็นบางสิ่ง Emacs เริ่มต้น (ไม่มีการกำหนดค่าผู้ใช้) ใช้.elไลบรารีจำนวนมากซึ่งรวมอยู่ใน Emac ทุกเครื่อง \shares\emacs\version number\lisp\พวกเขากำลังอยู่ใน แม้จะมีไฟล์เสียงกระเพื่อมหลายไฟล์ก็สามารถเริ่มต้นได้ในหนึ่งวินาที เมื่อฉันตรวจสอบไฟล์ของแพ็คเกจจำนวนมากที่มาพร้อมกับ Emacs ที่เป็นค่าเริ่มต้นฉันพบว่าไม่มีอะไรพิเศษเลยที่สามารถอธิบายได้ว่าทำไม Emacs จึงจัดการเพื่อเริ่มต้นภายในหนึ่งวินาที ใครสามารถบอกฉันได้ว่า Emacs จัดการสิ่งนั้นอย่างไรแม้จะมีไฟล์หลายพัน.elไฟล์
11 start-up 

1
ตัวแปรที่ประกาศสี
ฉันกำลังมองหาวิธีง่ายๆในการทำให้ emacs จดจำตัวแปรที่ประกาศไว้ในฟังก์ชันเดียวใน C / C ++ โดย "ง่าย" ฉันหมายถึงไม่มีแพ็คเกจภายนอกเพียงแค่มีบรรทัด elisp ในไฟล์กำหนดค่า Emacs การตั้งค่าเริ่มต้นของฉันชื่อตัวแปรสีเหลืองในการประกาศ แต่ให้พวกเขาสีขาวในการใช้งาน char toto; // 'char' is green, 'toto' is yellow toto = 42; // 'toto' is white ฉันต้องการทำให้ทุก "toto" ของฟังก์ชั่น / ขอบเขตเดียวกันเป็นสีเหลืองเช่นกัน ฉันได้ดูคำถามนี้แล้วแต่ฉันต้องการสิ่งที่เรียบง่ายกว่า ฉันพยายามทำบางสิ่งด้วยโหมดล็อคตัวอักษรแต่ฉันไม่สามารถทำสิ่งที่ปรับให้เข้ากับชื่อตัวแปรได้ ฉันมีแนวคิดสำหรับชื่อสมาชิกคลาส C ++ (โดยใช้รูปแบบชื่อ) ดังนั้นฉันจึงต้องการตัวแปรโลคัลตรงกับที่นี่

3
Orgmode: สามารถตั้งค่าแท็กที่ระดับไฟล์ได้หรือไม่?
มีไฟล์สำหรับโครงการเฉพาะฉันต้องการให้โหนดทั้งหมดในไฟล์นั้นมีแท็กที่ระบุโครงการเพื่อที่ฉันจะสามารถใช้มันเพื่อสร้างมุมมองวาระการประชุมสำหรับโครงการนั้นในภายหลังเท่านั้น จนถึงทั้งหมดที่ฉันได้พบคือการ#+TAGS: foo bar spamระบุรายการของแท็กที่เสนอในการเติมข้อความอัตโนมัติของแท็กสำหรับไฟล์นั้น ไม่มีใครรู้ของ#+XXXคำแนะนำเหมือนเพื่อให้บรรลุนี้
11 org-mode 

2
ปิดใช้งานคำเตือนเฉพาะใน flycheck (โดยเฉพาะ“ #pragma หนึ่งครั้งในไฟล์หลัก”)
ฉันใช้ flycheck เพื่อการพัฒนา C ++ และรับคำเตือนต่อไปนี้: #pragma once in main file ในส่วนหัวทั้งหมดรวมอยู่ในไฟล์หลัก ค้นหาเว็บฉันได้รับความประทับใจว่ามันเกี่ยวข้องกับวิธี gcc และเสียงดังกราว ฉันต้องการกำจัดคำเตือนนี้ มีอะไรที่ฉันพอจะทำได้บ้าง?
11 c++  flycheck 

2
ทำให้ emacsclient สร้างเฟรมเฉพาะในกรณีที่ไม่มีอยู่แล้ว
ฉันจะemacsclient -a '' -nสร้างเฟรมใหม่ได้เฉพาะในกรณีที่ยังไม่มีเฟรมอยู่แล้ว? ปัญหาเกี่ยวกับการ-cตั้งค่าสถานะคือมันสร้างเฟรมใหม่ทุกครั้ง ปัญหาที่ไม่มีคือถ้าไม่มีการเปิดเฟรมมันจะเปิดในบรรทัดคำสั่ง หากฉันสามารถตรวจสอบว่ามีเฟรม Emacs ที่เปิดอยู่จากเปลือกหอยฉันสามารถโทรออกด้วยหรือไม่-cขึ้นอยู่กับว่าจะได้รับพฤติกรรมที่ฉันต้องการ ฉันเหนื่อย: $ emacsclient -a '' --eval '(frames-on-display-list)' (#<frame F1 0xba2740>) ฉันได้รับผลลัพธ์เดียวกันเสมอ ฉันสามารถใช้ไฟล์ชั่วคราวหรือ pgrep แต่วิธีการเหล่านั้นมีข้อผิดพลาดมาก นี้จะคล้ายกับคำถามนี้แต่มันไม่ได้เป็นที่ซ้ำกันตั้งแต่ OP emacsclientมีความพึงพอใจกับต้องมีกรอบเปิดก่อนที่จะเรียก

2
รับลิงก์องค์กรเพื่อแทรกคำอธิบายลิงก์โดยอัตโนมัติหรือไม่
ถาม:ฉันจะรับorgฟังก์ชันลิงก์ที่กำหนดเองเพื่อแทรกคำอธิบายโดยอัตโนมัติได้อย่างไร ฉันต้องการจัดเก็บorgลิงก์ไปยังไฟล์ในdiredบัฟเฟอร์ แต่ต้องการให้คำอธิบายลิงก์เป็นชื่อไฟล์ sans path แทนที่จะรายงานเส้นทางแบบเต็มเช่น: file:~/the/full/path/myfile.ext ; default, but no thanks myfile.ext ; what I want ตอนนี้: org-store-linkลิงก์ hardcodes จากdiredเพื่อระบุค่าเริ่มต้น ฉันได้เขียนฟังก์ชั่นที่กำหนดเองแทน (เขียนจากฟังก์ชั่นฮาร์ดโค้ด) และเพิ่มไปที่org-store-link-functions: (defun dired-store-link () (when (derived-mode-p 'dired-mode) (let ((file (dired-get-filename nil t))) (setf file (if file (abbreviate-file-name (expand-file-name file)) default-directory)) (org-store-link-props :type "dired" :link file :description (file-name-nondirectory …
11 org-mode  elisp 

3
มีโหมดการรับชมที่เหมาะสมสำหรับไฟล์บันทึกขนาดใหญ่หรือไม่?
ไฟล์บันทึกบางไฟล์ที่ฉันใช้งานมีขนาดใหญ่พอสมควร (> 200Mb) แต่มันก็ดีถ้าดูใน Emacs ในตอนนี้โดยค่าเริ่มต้น Emacs จะพยายามเปิดใช้งานโหมด log4j ซึ่งจะทำให้ทุกอย่างช้าลง สิ่งที่ฉันต้องการจริงๆคือเครื่องมือดูที่มีน้ำหนักเบาซึ่ง: ปิดการใช้งานโหมดเลิกทำ สามารถเปลี่ยนกลับอัตโนมัติเมื่อมีการอัปเดตไฟล์บันทึก สามารถติดตามหางของบันทึกเมื่อมีการปรับปรุง เป็นการดีที่จะทำแผนที่ในส่วนเล็ก ๆ ของล็อกไฟล์เมื่อคุณเปิดดู มีโหมดบันทึกใด ๆ อยู่หรือไม่
11 logging 

2
วิธีการสร้าง Emacs master branch (aka trunk) บน MS-Windows
ฉันกระโดดลงไปในวันนี้และเริ่มต้นภารกิจเพื่อสร้าง Emacs master branch build ล่าสุด - หรือที่รู้จักในชื่อ Emacs Trunk - สำหรับ MS-Windows ฉันพบบล็อกเก่าและผ่านขั้นตอนเพียงเพื่อจะพบกับข้อผิดพลาดบอกฉันว่าวิธีการเฉพาะไม่ได้รับการสนับสนุนอีกต่อไป ข้อความแสดงข้อผิดพลาดบอกให้ฉันอ่าน: .../emacs/nt/INSTALL. นั่นคือทั้งหมดที่ดีและสวยงามถ้าโครงสร้างพื้นฐานสำหรับการสร้าง Emacs ได้รับการติดตั้ง / กำหนดค่าแล้ว แน่นอนว่ามันจะมีประโยชน์หากมีขั้นตอนที่ 1, 2, 3 ที่อธิบายถึงเครื่องมือที่จำเป็นและวิธีการติดตั้ง / กำหนดค่าด้วยตาเฉพาะเพื่อสร้าง Emacs บน MS-Windows ในกรณีที่ใครก็ตามที่ต้องการเตรียมการเขียนรายละเอียดโปรดโพสต์คำตอบ ถ้าไม่ฉันจะเขียนขึ้นเองเมื่อฉันคิดออกว่าจะทำอย่างไร ฉันพบกับบล็อกถนนเพิ่มเติมและได้ส่งรายงานข้อผิดพลาดในระหว่างกาล - ฉันยังไม่ทราบว่าเป็นฉันหรืออาจเป็นข้อผิดพลาด: https://debbugs.gnu.org/cgi/bugreport.cgi? ข้อผิดพลาด = 21582 ฉันคิดว่าผู้คนจำนวนมากจะมีแนวโน้มที่จะสร้าง Emacs ของตัวเองหากมี "cheat-sheet" ที่สามารถใช้งานได้โดยผู้เริ่มต้นโปรแกรมเมอร์หรือมือสมัครเล่นเช่นตัวเอง (ซึ่งไม่ใช่โปรแกรมเมอร์โดยการค้าขาย)

2
ป้องกันการคลิกเมาส์ในเฟรมที่ไม่ใช้งานจากจุด reposistioning
ฉันต้องการป้องกันการคลิก "ครั้งแรก" บนเฟรมในหน้าต่าง X ที่ไม่ใช้งานไม่ให้มีผลกระทบใด ๆ นอกจากจะทำให้เฟรมใช้งานได้ โดยเฉพาะฉันไม่ต้องการให้เปลี่ยนตำแหน่ง ปัญหาคือว่าฉันไม่สามารถดูเหมือนจะตรวจสอบว่าเขากรอบก็ไม่ได้ใช้งานเมื่อฉันได้รับการคลิกเมาส์ ดังนั้นรหัสต่อไปนี้จะแสดง"y": ;; detect if frame is active when clicking (defun my/mouse-drag-region (event) (interactive "e") (mouse-minibuffer-check event) (let* ((window (caadr event)) (frame (window-frame window))) (if (eql frame (selected-frame)) (print "y") (print "n")))) (global-set-key [down-mouse-1] 'my/mouse-drag-region) ฉันจะตรวจสอบได้อย่างไรว่าเฟรมไม่ได้ใช้งานมาก่อน หรือมีใครบางคนประสบความสำเร็จในสิ่งที่ฉันพยายามจะทำที่อื่น? หมายเหตุ:ฉันกำลังถามหาสิ่งที่แตกต่างจากคำถามอื่นซึ่งเกี่ยวกับหน้าต่างที่ไม่ได้ใช้งานไม่ใช่เฟรมที่ไม่ได้ใช้งาน
11 frames  x11 


2
วิธีการเปลี่ยนใบหน้าของลิงค์โหมดองค์กรขึ้นอยู่กับประเภทลิงค์?
โหมดองค์กรเสนอความหลากหลายของประเภทลิงค์ที่แตกต่างกัน ([http], [ไฟล์], [bibtex], [magit] ... ) อย่างไรก็ตามพวกเขาทั้งหมดได้รับรูปลักษณ์ที่เหมือนกันซึ่งกำหนดโดยมูลค่าของหน้าสำหรับลิงค์องค์กร เป็นไปได้เช่นเปลี่ยนสีพื้นหลังขึ้นอยู่กับประเภทของการเชื่อมโยง? ดังนั้นลิงก์ http จะมีพื้นหลังสีเหลืองและไฟล์ลิงค์เป็นสีน้ำเงินหรือไม่

2
จะใช้ while-no-input ได้อย่างไร?
จาก docstring: ดำเนินการ BODY ตราบใดที่ไม่มีการป้อนข้อมูลที่รอดำเนินการ หากอินพุตมาถึงนั่นจะเป็นการจบการทำงานของ BODY และwhile-no-inputส่งคืน t การเลิกทำให้มันกลับมาเป็นศูนย์ ถ้า BODY เสร็จแล้วwhile-no-inputส่งคืนค่าใด ๆ ที่ BODY สร้างขึ้น หากฉันเข้าใจอย่างถูกต้องมาโครนี้จะอนุญาตให้ฉัน (พยายาม) ทำการคำนวณอย่างหนักโดยไม่ต้องแขวนอินเทอร์เฟซ นั่นเป็นแนวคิดที่ฉันคิดว่าน่าสนใจ แต่ฉันก็ยังสงสัยว่าเมื่อไรที่มีประโยชน์ในทางปฏิบัติ ดูเหมือนว่าการคำนวณสามารถถูกขัดจังหวะได้ตลอดเวลาโดยไม่มีข้อมูลว่าเกิดอะไรขึ้นและไม่มีวิธีที่ง่ายในการดำเนินการต่อในภายหลัง ซึ่งทำให้ฉันคิดว่ามันอาจจะไม่เป็นประโยชน์หลังจากทั้งหมด ... มีวิธีแนะนำให้ใช้while-no-inputแมโครหรือไม่? มีตัวอย่างการใช้มาโครนี้ในป่าไหม?

3
วิธีโอนย้ายอาร์กิวเมนต์สองข้อของฟังก์ชันใน Python อย่างไร
ฉันจะสลับสองอาร์กิวเมนต์ในการเรียกไปยังฟังก์ชัน Python ได้อย่างไร ถ้าฉันใส่pointช่องว่างระหว่างสองอาร์กิวเมนต์นี้: self.assertEqual(json.loads(some.data), json_data) จากนั้นM-t( transpose-words) ฉันจะได้รับ: self.assertEqual(json.loads(some.json), data_data) ในทางกลับกันด้วย CMt ( transpose-sexps) ฉันจะได้รับ: self.assertEqual(json.loadsjson_data, (some.data)) สิ่งที่ฉันต้องการคือ: self.assertEqual(json_data, json.loads(some.data)) มีคำสั่งที่จะทำเช่นนั้นหรือไม่?

2
RefTex ค้นหาบทความหลายรายการด้วย Helm
ฉันเพิ่งเริ่มใช้ Helm และสนุกกับมันมาก อย่างไรก็ตามฉันใช้ emacs เพื่อเขียน LaTeX มากมาย เมื่อฉันอ้างถึงบทความฉันมักจะต้องอ้างอิงหลายรายการในแมโครอ้างอิงเดียวกัน - ฉันสามารถค้นหาไฟล์บรรณานุกรมของฉันสำหรับรายการสองรายการแยกกันได้อย่างง่ายดายมากโดยใช้ RefTex: citekey1\|citekey2 อย่างไรก็ตามเมื่อเปิดโหมด helm สิ่งนี้จะไม่ทำงานอีกต่อไป ฉันยังสามารถค้นหาบทความเดียว แต่ไม่สามารถค้นหาได้หลายบทความ ฉันจะทำสิ่งต่าง ๆ ในหางเสือได้อย่างไร?

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