Emacs

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

2
เมื่อใดที่ฉันควรใช้ with-eval-after-load ในไฟล์กำหนดค่าของฉัน
ฉันไปที่ไฟล์กำหนดค่าของฉันและต้องการล้างข้อมูล ความเข้าใจของฉันwith-eval-after-loadคือว่าร่างกายของมันจะได้รับการประเมินทันทีหลังจากโหลดแพ็คเกจที่เกี่ยวข้อง with-eval-after-loadในขณะที่การทำความสะอาดไฟล์การกำหนดค่าของฉันและแยกพวกเขามากขึ้นผมอยากจะใส่ทุกแพคเกจค่ากับ ทุกอย่างเป็นไปตามที่คาดไว้จนกว่าฉันจะปิดล้อมการกำหนดค่าสำหรับและhelmhelm-projectile นี่คือสิ่งที่ฉันมีอยู่ในใจ ( lisp / init-helm.el ): (with-eval-after-load 'helm (setq helm-mode-line-string "") (add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages) (define-key global-map (kbd "C-c m") 'helm-imenu) (define-key global-map (kbd "C-x b") 'helm-buffers-list)) (with-eval-after-load 'helm-command (global-set-key (kbd "M-x") 'helm-M-x)) (with-eval-after-load 'helm-projectile (helm-projectile-on)) หลังจากรีสตาร์ท Emacs ฉันได้รับปัญหาขนาดหน้าต่างนี้: นี่คือวิธีปรับขนาดหน้าต่างของฉัน: (set-frame-parameter nil 'fullscreen 'fullboth) ฉันเดาว่าฉันใช้ผิดwith-eval-after-loadวิธีหนึ่งจะทำให้การกำหนดค่า Emacs ของเขาถูกสุขลักษณะและทำให้แน่ใจได้ว่าไม่มีอะไรผิดพลาดไม่ว่าจะติดตั้งแพ็คเกจใด

2
จำการอนุญาตให้เรียกใช้ตัวแปรท้องถิ่นที่มีความเสี่ยง
ในหลายโครงการของฉันฉันใช้.dir-locals.elไฟล์เพื่อตั้งค่าตัวแปรเฉพาะโครงการเช่นคำสั่งคอมไพล์ เมื่อเปิดไฟล์ภายในไดเรกทอรีที่มีไฟล์ดังกล่าวให้emacsร้องเรียนเกี่ยวกับ"ตัวแปรในเครื่องที่มีความเสี่ยง"โดยเฉพาะ: The local variables list in $DIR$/ contains variables that are risky (**) Do you want to apply it? You can type y -- to apply the local variables list. n -- to ignore the local variables list. ** LaTeX-command : "lualatex -shell-escape" ฉันไม่ต้องการปิดคุณสมบัตินี้ แต่ฉันต้องการให้ถามเพียงครั้งเดียว (ในระหว่างเซสชัน emacs) สำหรับ.dir-locals.elไฟล์เฉพาะ ฉันกำลังใช้ปลั๊กอินบางตัวที่ต้องการแยกวิเคราะห์ทรีทรีทรีทั้งหมดและมันค่อนข้างน่ารำคาญที่จะตีyหลายร้อยครั้งเพื่อแยกวิเคราะห์ทุกอย่าง …

2
วิธีใช้ org-plus-contrib
ฉันต้องการใช้แพคเกจที่ได้รับการสนับสนุนของโหมด org: http://orgmode.org/worg/org-contrib/ [แก้ไข] โซลูชัน: ตามคำตอบด้านล่าง: 1) อันแรกควรเพิ่ม elpa แพ็คเกจ (require 'package) ... (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t) ... (package-initialize) นี่คือรายละเอียด [ที่นี่] 1 2) หลังจากนั้น, ด้านล่างบรรทัดด้านบน, หนึ่งสามารถเพิ่มโมดูลที่ต้องการเช่นนี้: (require 'org-checklist) คำเตือน แพคเกจบางอย่างอาจมีอยู่ในที่เก็บ git-hub แต่ยังไม่ได้อยู่ในที่เก็บอย่างเป็นทางการ (เช่น org-eww ในขณะที่เขียน) เช่นนี้การกำหนดสิ่งเหล่านี้จะทำให้เกิดข้อผิดพลาด ก่อนที่จะเพิ่มความต้องการมันเป็น reccomended เพื่อเรียกดูโฟลเดอร์: ~/.emacs.d/elpa/org-plus-contrib-<DATE>
15 org-mode  package 

1
Helm swoop ในไฟล์โครงการทั้งหมด (ไม่ใช่แค่บัฟเฟอร์ปัจจุบัน)
ดังนั้นฉันจึงต้องการhelm-swoopดูไฟล์ทั้งหมดในโครงการไม่ใช่เฉพาะชุดบัฟเฟอร์เปิดปัจจุบัน นี่คือเพื่อให้ฉันสามารถใช้ swoop เพื่อค้นหาสิ่งที่เกิดขึ้นทั้งหมดในโครงการทำเครื่องหมายคนที่เกี่ยวข้องแล้วแก้ไขพวกเขา (ในโหมดแก้ไข helm swoops) ฉันรู้สึกว่าอาจมีวิธีที่สะอาดในการทำเช่นนี้กับ Helm / Helm โฉบ แต่นี่คือความพยายามของฉันที่จะคิดผ่านทางแก้ปัญหา: รวบรวมชื่อไฟล์จากกระสุนปืน สร้างรายการบัฟเฟอร์จากรายการชื่อไฟล์ ทำรูทีนเดียวกันกับ helm-multi-swoop-all นอกเหนือจากการใช้รายการบัฟเฟอร์ใหม่นี้ (projectile-current-project-files)ดูเหมือนว่าจะให้รายชื่อไฟล์ที่ฉันกำลังมองหา ดังนั้นhelm-multi-swoop-allดูเหมือนว่ามันจะค่อนข้างง่ายในการคัดลอกแล้วปรับแต่ง (defun helm-multi-swoop-all (&optional $query) (interactive) "Apply all buffers to helm-multi-swoop" (cond ($query (setq helm-multi-swoop-query $query)) (mark-active (let (($st (buffer-substring-no-properties (region-beginning) (region-end)))) (if (string-match "\n" $st) (message "Multi line region is …
15 buffers  helm 

4
ฉันจะสร้างโครงสร้างใหม่ในโครงการใน emacs ได้อย่างไร (เปลี่ยนชื่อวิธีทุกที่)
ฉันต้องการเขียนส่วนของโครงการ opensource อีกครั้ง ซึ่งรวมถึงวิธีการเปลี่ยนชื่อ ฉันจะทำอย่างมีประสิทธิภาพใน emacs ทั่วทั้งโครงการได้อย่างไร ฉันจะไม่ใช้แฮ็กเช่นการค้นหาและแทนที่ในทุกบัฟเฟอร์

1
ฉันจะใช้ช่องทำเครื่องหมายของโหมดองค์กรได้อย่างไร
ฉันไม่แน่ใจว่าจะใช้ช่องทำเครื่องหมายใน Emacs ได้อย่างไร ฉันใช้ Emacs 24.3 เอกสารที่แสดงให้เห็นการใช้org-toggle-checkboxเป็น "ด้วยอาร์กิวเมนต์คำนำหน้าเดียวเพิ่มช่องทำเครื่องหมายที่ว่างเปล่า ..." ฉันพยายามเริ่มต้นด้วยรายการที่มีอยู่ (ด้วยโหมด org เป็นโหมดหลัก) เช่นเดียวกับใน: * shopping list ** eggs ** bread ** Tesla Model S ** bacon ไม่ว่าฉันจะใส่จุดใน "รายการช้อปปิ้ง" หรือใน "ไข่" การกดC-u C-c C-x C-b(ซึ่งทำงานorg-toggle-checkbox) ส่งผลให้เกิดข้อผิดพลาด "ไม่มีรายการในทรีย่อย" ถูกพิมพ์ไปยัง minibuffer พฤติกรรมนี้เกิดขึ้นโดยไม่มีไฟล์ init ของฉัน ( emacs -Q) ดังนั้นจึงเป็นปัญหาโหมด org หมดจด วิธีที่ถูกต้องในการเริ่มใช้ช่องทำเครื่องหมายคืออะไร?
15 org-mode 


3
วิธีที่ง่ายที่สุดในการติดตั้งไลบรารีสนับสนุน Emacs Windows
ผมติดตั้งไบนารีของ Emacs 24.4 สำหรับ Windows และต้องการติดตั้งห้องสมุดสนับสนุนที่อธิบายไว้ในEmacs สำหรับ Windows README ไลบรารีที่คอมไพล์แล้วล่าสุดมีให้บริการจากโครงการezwinportsแต่การติดตั้งพวกมันใช้เวลาเพียงเล็กน้อย ฉันต้องเลือกไลบรารีทั้งหมดที่กล่าวถึงใน README ของ Emacs สแกนezwinports READMEสำหรับสิ่งที่จำเป็นต้องมีเพิ่มเติมและดาวน์โหลดไฟล์เก็บถาวร zip แต่ละอัน จากนั้นคลายแพ็กเกจย้ายไปยังตำแหน่งถาวรและเพิ่มแต่ละไดเร็กทอรีไปยังPATHตัวแปรของฉัน มีไฟล์ที่ซ้ำกันภายในไฟล์เก็บถาวรเหล่านี้ดังนั้นฉันจึงระมัดระวังในการแตกไฟล์ทั้งหมดในไดเรกทอรีเดียวกันโดยไม่ตรวจสอบว่ามันเหมือนกัน มีวิธีอัตโนมัติในการทำเช่นนี้หรือไม่?

2
จะนำทางไปยังแพ็คเกจที่ติดตั้งอย่างรวดเร็วได้อย่างไร?
เมื่อฉันอยู่ในผู้จัดการแพ็คเกจ ( M-x package-list-packages) ฉันต้องการไปยังแพ็คเกจที่ติดตั้งไว้อย่างรวดเร็ว มีนับพันของแพคเกจทำเครื่องหมายเป็นใช้ได้ , การติดตั้งหรือbuilt-inแต่ทั้งหมดของปรากฏลูกศรที่จะเป็นบรรทัดโดยบรรทัด สิ่งนี้เป็นการกำกับดูแลกับผู้จัดการแพคเกจหรือฉันมองเห็นบางสิ่งบางอย่างที่ชัดเจน (นอกเหนือจากการค้นหาสตริงพื้นฐานหรือไม่)


2
วิธีสลับเต็มหน้าจอในโหมด Emacs GUI (ตัวเลือกแบบเต็มหน้าจอจะเป็นสีเทาใน Kubuntu)
นี่เป็นคำถามพื้นฐาน แต่ฉันรู้สึกว่าสูญเสียไปจริงๆ (การค้นหาโดย Google ค้นพบวิธีแก้ปัญหาสำหรับ OS X เท่านั้น) จนกระทั่งเมื่อเร็ว ๆ นี้ฉันใช้โหมดเทอร์มินัลเป็นหลัก (ซึ่งฉันสามารถสร้างแบบเต็มหน้าจอโดยใช้ทางลัดเต็มหน้าจอของสภาพแวดล้อมเดสก์ท็อปสำหรับหน้าต่างเชลล์) แต่เปลี่ยนเป็น GUI เพราะฉันต้องการเลือกแบบอักษร ข้อเสนอแนะใด ๆ การใช้ปุ่มต่าง ๆ ในแถบชื่อเรื่องของหน้าต่างไม่ได้เต็มหน้าจออย่างแท้จริง - ฉันยังคงเห็นแถบงานและแถบชื่อหน้าต่าง แก้ไข: ฉันควรเพิ่มว่าFull-screenตัวเลือก (เช่นหลังจากคลิกขวาที่แถบชื่อหน้าต่าง) เป็นสีเทา (ดูรูปที่ 1 ด้านล่าง) นอกจากนี้การเปลี่ยนการFull Screenตั้งค่าภายใต้Special Applications Settingsการแปลงกลับเป็นการปิดการใช้งานโดยอัตโนมัติ No borderตัวเลือกที่จะนำเสนอวิธีการแก้ปัญหาบางส่วนในการที่จะทำให้แถบชื่อหน้าต่างหายไป (แม้ว่าแถบงานยังคงมองเห็นได้) - มันจะดีถ้ามีวิธีที่จะได้สลับแบบเต็มหน้าจอโดยใช้แป้นพิมพ์ลัดและได้รับ KDE และ emacs' การปรับแต่งได้ฉันคิดว่ามันน่าจะเป็นเพราะ KDE ของฉันและ emacs n00b จัดแสดง 1: ปรับปรุง: เพื่อป้องกันการตั้งค่าใด …

2
วิธีการผูกกุญแจกับคำสั่ง / รายการวาระเฉพาะในโหมดองค์กร
ฉันได้เพิ่มคีย์ที่กำหนดเองสำหรับวาระการประชุมเพื่อแสดงรายการสิ่งที่ต้องทำที่ไม่ได้กำหนดไว้ทั้งหมดที่ติดตาม Sacha Chua: (defun sacha/org-agenda-skip-scheduled () (org-agenda-skip-entry-if 'scheduled 'deadline 'regexp "\n]+>")) (setq org-agenda-custom-commands '(("u" "Unscheduled tasks" alltodo "" ((org-agenda-skip-function 'sacha/org-agenda-skip-scheduled) (org-agenda-overriding-header "Unscheduled TODO entries: "))))) ฉันสามารถแสดงรายการนี้ด้วยC-c a uแต่ฉันอยากจะผูกมันไว้กับคีย์เดียว ขณะนี้ฉันมีสิ่งที่ง่าย: (global-set-key (kbd "<f8>") 'org-todo-list) แต่ฉันต้องการสิ่งนี้เพื่อใช้คำสั่งที่กำหนดเองข้างต้น ฉันได้ขุดคู่มือแล้ว แต่ฉันไม่เห็นวิธีการทำ
15 org-mode  keymap 

3
อักขระอธิบายใบหน้าไม่อยู่ภายใต้ / ไม่สามารถเข้าถึงได้โดยเคอร์เซอร์
ฉันชอบใช้การรวมกันของdescribe-faceและcustomize-faceเพื่อปรับลักษณะที่ปรากฏของสภาพแวดล้อมการทำงานของฉัน บางครั้งเวิร์กโฟลว์นี้ล้มเหลวเมื่อฉันต้องการเปลี่ยนใบหน้าของตำแหน่งที่ฉันไม่สามารถเข้าถึงได้ด้วยเคอร์เซอร์ โหมดบรรทัด, ส่วนหัว, ส่วนหัวของ Magit-blame ฯลฯ ส่วนใหญ่ฉันสามารถติดตามและแก้ไขข้อผิดพลาดได้ แต่บางครั้งฉันก็ติดขัด (ฉันไม่รู้ว่ามีส่วนหัวจนกระทั่งเมื่อวานนี้) . มีวิธีที่สะดวกในการอธิบายใบหน้าของตำแหน่งในเฟรมที่เคอร์เซอร์ไม่สามารถเข้าถึงได้หรือไม่? โดยวิธีการใช้เมาส์เช่น


2
วิธีการต่อสองรายการเข้าด้วยกัน?
ขออภัย elisp ไม่ใช่ของฉันที่ดีที่สุด ฉันต้องการรวมสองรายการของสตริงด้วยวิธีนี้: ("a" "b" "c") + ("d" "e" "f") -> ("a" "b" "c" "d" "e" "f") ลำดับไม่สำคัญดังนั้นฉันจึงเขียนรหัสนี้: (while lista (add-to-list 'listb (car lista)) (setq lista (cdr lista))) มันใช้งานได้ แต่ฉันสงสัยว่ามีฟังก์ชั่นที่ทำสิ่งนี้แล้ว เบาะแสใด ๆ ขอบคุณล่วงหน้า.
15 list 

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