Emacs

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

3
คุณจะอัพเดทคำจำกัดความของโหมดรองได้อย่างไรขณะที่พัฒนาขึ้นมา?
ฉันเริ่มเขียนโค้ดโหมดย่อยเพื่อให้การป้อนคีย์บางอย่าง ความพยายามเริ่มต้นของฉันมีการพิมพ์ผิด: (define-minor-mode borked-mode "A mode defined with a broken key binding" nil nil '(([b] . 'previous-line))) ผมตั้งใจว่าจะใช้bที่สำคัญและตระหนักได้ทันทีว่าฉันควรจะได้นำมาใช้แทน"b" [b]ดังนั้นฉันจึงนิยามโหมดย่อยใหม่: (define-minor-mode borked-mode "A mode defined with a broken key binding" nil nil '(("b" . 'previous-line))) อย่างไรก็ตามสิ่งนี้ไม่ได้ผล สิ่งนี้ทำให้ฉันตกอยู่ในการไล่ล่าห่านป่าผ่านวิธีการต่างๆของกุญแจที่มีผลผูกพัน (เช่น, (kbd ... ), [... ], ฯลฯ ) ในที่สุดฉันก็รู้ว่าเพียงแค่การประเมิน(define-minor-mode ...)รูปแบบใหม่นั้นไม่ได้เปลี่ยนแปลงอะไรเลยฉันติดอยู่กับแผนที่หลักดั้งเดิมที่แตกหัก ฉันลองเปลี่ยน keymap โดยตรงผ่านทาง(define-key borked-mode-map …
13 minor-mode 

1
ตัวอย่างโค้ด yasnippet สำหรับหลายโหมด
ฉันมีตัวอย่างต่อไปนี้: # -*- mode: snippet -*- # contributor: Song Qiang <tsiangsung@gmail.com> # key: m # group: Math # name: Inline math \( ... \) # -- \\($1\\)$0 และผมอยากให้มันสามารถใช้ได้สำหรับทั้งสองและlatex-mode org-modeสิ่งนี้จะสำเร็จได้อย่างไร ฉันสามารถ symlink แต่ฉันพยายามหาวิธีที่ชาญฉลาด
13 yasnippet 

9
วิธีแก้ไข elisp โดยไม่หลงทางในวงเล็บ
ฉันกำลังแก้ไขโค้ด elisp จาก linum.el: (custom-set-variables '(linum-format 'dynamic)) (defadvice linum-update-window (around linum-dynamic activate) (let* ((w (length (number-to-string (+ (count-lines (point-min) (point-max)) 1)))) (linum-format (concat " %" (number-to-string w) "d "))) ad-do-it)) ผมสามารถที่จะแก้ไขข้อผิดพลาดที่เยื้องถูกปิดโดยหนึ่งโดยการปรับเปลี่ยนไป(count-lines (point-min) (point-max)) (+ (count-lines (point-min) (point-max)) 1)นั่นเป็นเรื่องง่าย แต่ตอนนี้ฉันต้องการแก้ไขเพื่อให้ความกว้างต่ำสุดคือ 2 โดยการเพิ่ม if-conditional โดยที่(concat " %" (number-to-string w) "2d ")ถ้าจำนวนบรรทัดเป็น <10 …

1
การเว้นบรรทัดบรรทัดมากเกินไปด้วยฟอนต์บางตัว
เป็นเวลานานที่ฉันใช้ DejaVu Sans Mono เป็นฟอนต์การเขียนโปรแกรมของฉัน ฉันยังหาแบบอักษรที่ดีขึ้น แต่เล็ก ๆ น้อย ๆ ที่ผ่านมาในขณะที่ผมค้นพบของ Mozilla ฟิร่าซึ่งดูดีมากสำหรับรหัส ดังนั้นฉันจึงตัดสินใจลองใช้ Emacs น่าเสียดายที่เมื่อฉันใช้มันใน Emacs ระยะห่างระหว่างบรรทัดจะเพิ่มขึ้นและลดจำนวนบรรทัดที่ฉันเห็นได้ประมาณ 10 รายการ ฉันได้ลอง(setq line-spacing 0)และผสมผสานสิ่งต่าง ๆ เช่น(set-frame-font (font-spec :name "Fira Mono" :width 'normal :height 100))แต่ไม่ว่าฉันจะทำอะไรระยะห่างบรรทัดมากเกินไปยังคงอยู่ (เป็นไปไม่ได้ที่จะใช้line-spacingค่าลบใน Emacs ซึ่งน่าจะเป็นวิธีแก้ปัญหาที่ชัดเจน) ดูเหมือนว่าจะไม่เป็นข้อผิดพลาดในแบบอักษรเพราะเมื่อฉันใช้ Fira Mono ใน Kate ที่ขนาดเท่ากันระยะห่างระหว่างบรรทัดคือสิ่งที่ฉันจะพิจารณาตามปกติ . นี่เป็นข้อบกพร่องใน Emacs หรือไม่? มีวิธีแก้ไขปัญหานี้หรือไม่? ขอบคุณสำหรับคำแนะนำใด ๆ ซ้าย: …

4
`สัญลักษณ์ - ค่า 'ทำอะไร
เอกสารทำให้ฉันไม่ฉลาด: ฟังก์ชันนี้คืนค่าที่เก็บไว้ในเซลล์ค่าของสัญลักษณ์ นี่คือที่เก็บค่าปัจจุบัน (ไดนามิก) ของตัวแปร หากตัวแปรไม่มีการเชื่อมต่อโลคัลนี่เป็นเพียงค่าโกลบอล หากตัวแปรเป็นโมฆะข้อผิดพลาดเป็นโมฆะตัวแปรจะถูกส่งสัญญาณ จุดของค่าสัญลักษณ์คืออะไร? ฉันจะต้องใช้ที่ไหนและเมื่อไหร่?
13 elisp  symbols 

4
การแทนที่สตริงชื่อ?
ฉันมักจะต้องทำการแทนที่ของสตริงเดียวกันหลายครั้ง: (format "%s %s %s" "a" "a" "a") ;; gives: "a a a" (เป็นเพียงตัวอย่างหลอกๆในกรณีนี้ดีกว่าที่จะใช้กาว "a" กับช่องว่าง แต่โดยทั่วไปแล้วฉันจัดการกับสถานการณ์ที่ซับซ้อนมากขึ้น) มีวิธีที่จะทำการทดแทนที่มีชื่อหรือไม่? เช่นในไพ ธ อนคนหนึ่งจะเขียน: "{0} {0} {0}".format("a") # or: "{name} {name} {name}".format(name="a")
13 elisp  string 

1
after-init-hook vs eval-after-load / with-eval-after-load
ฉันได้พบว่ามีประโยชน์มากกว่าวิธีการแพคเกจทำงานใน Emacs 24แต่ฉันต้องการคำตอบที่ชัดเจนจากผู้ใช้ที่มีประสบการณ์หรือนักพัฒนาหลักซึ่งสิ่งเหล่านี้เป็นที่ต้องการในกรณีทั่วไปใน 24.4 Afaik (add-hook 'after-init-hook ...)เป็นวิธีที่จะพูดถึงสัตว์เดรัจฉานบังคับในการตั้งค่าการปรับแต่งสำหรับแพคเกจ อย่างไรก็ตามeval-after-loadและความหวานของ syntactically มากขึ้นwith-eval-after-loadดูเหมือนจะเหมาะสมสำหรับการกำหนดค่าแบบไดนามิกมากขึ้นและเม็ดเล็กที่ดีที่เล่นได้ดีกับการโหลดส่วนขยายทีละส่วนแยกและขี้เกียจ ฉันเข้าใจถูกต้องหรือไม่ ฉันควรจำอะไรอีก

3
ใช้ emacs กับธันเดอร์เบิร์ดเพื่อเขียนและตอบจดหมาย
มีหลายอย่างที่เขียนขึ้นสำหรับการใช้ emacs เป็นโปรแกรมอีเมลหลักแบบเต็ม ฉันกำลังมองหาบางอย่างด้วยการตั้งค่าอย่างง่ายเพื่อให้ Thunderbird เป็นโปรแกรมจัดการอีเมลหลักของฉัน แต่เขียนและส่งอีเมลเป็น emacs เนื่องจากไพ ธ อนสามารถส่งจดหมายจากบรรทัดคำสั่งได้ฉันจึงสงสัยว่าสิ่งนี้จะไม่ยากเกินไปสำหรับ emacs ขั้นตอนต่อไป: ถ้าเป็นไปได้ฉันยังคงสามารถซิงค์กับเซิร์ฟเวอร์ imap เพื่อดึงอีเมล ~ 100 ครั้งล่าสุดเพื่อให้ฉันสามารถเขียนคำตอบเป็น emacs สิ่งนี้ไม่จำเป็นต้องมีการจัดการโฟลเดอร์ แต่มีการซิงค์จำนวนหนึ่งแม้ว่าฉันไม่จำเป็นต้องให้ข้อความในเครื่องพร้อมใช้งานกับ emacs หลังจากเซสชัน มันจะยังต้องใช้แผนที่ออฟไลน์ไหม? ข้อเสนอแนะสำหรับการกำหนดค่าที่เหมาะสม?
13 email 

2
ย้ายบรรทัดโหมดและ minibuffer ไปด้านบน
มีวิธีใดบ้างที่ฉันสามารถย้าย line mode และ minibuffer จากด้านล่างไปด้านบนของหน้าจอ? minibuffer ถูกครอบคลุมโดยคำถามก่อนหน้าวิธีการแสดงเนื้อหาของ minibuffer ตรงกลางเฟรม emacs? ดังนั้นคำถามนี้เกี่ยวกับบรรทัดโหมดเป็นหลัก ฉันเพิ่งวางแล็ปท็อปของฉันและแตกหน้าจอจึงไม่สามารถมองเห็นได้มากตามแถวด้านล่าง

3
ล่ามเฉพาะรหัสบล็อกใน Org Babel
เป็นไปได้หรือไม่ว่าในไฟล์ org เดียวกันนั้นโค้ดบล็อกสองอันในภาษาเดียวกันที่รันในล่ามที่ต่างกันโดยการระบุตัวเลือกต่าง ๆ ที่ด้านบนสุดของบล็อคโค้ด

4
การลด LATEX_HEADER ถ่วงที่ด้านบนของไฟล์ org ของฉัน
ฉันมักจะเขียนโน้ตในโหมด org และส่งออกไปยังลาเท็กซ์ อย่างไรก็ตามเนื่องจากเอกสารบางฉบับมีความซับซ้อนฉันจึงจำเป็นต้องรวมแพคเกจยางพาราจำนวนมากไว้ที่ด้านบนดังนี้: #+LATEX_HEADER: \usepackage[margin=1.15in]{geometry} #+LATEX_HEADER: \usepackage{parskip} #+LATEX_HEADER_EXTRA: \usepackage{graphicx} #+LATEX_HEADER_EXTRA: \usepackage{mdframed} #+LATEX_HEADER_EXTRA: \usepackage{needspace} #+LATEX_HEADER_EXTRA: \usepackage{hyperref} #+LATEX_HEADER_EXTRA: \usepackage{titling} #+LATEX_HEADER_EXTRA: \usepackage{enumitem} #+LATEX_HEADER_EXTRA: \usepackage{etoolbox} #+LATEX_HEADER_EXTRA: \usepackage{color} #+LATEX_HEADER_EXTRA: \usepackage{underscore}... เป็นไปได้หรือไม่ที่จะเก็บคำสั่ง latex ทั้งหมด (\ usepackage คำจำกัดความมาโคร ฯลฯ ) ไว้ในไฟล์เท็กซัสแยกต่างหากเพื่อที่ฉันจะได้รวมบรรทัดเดียวไว้ที่ด้านบนของไฟล์ org? สิ่งนี้จะลดความยุ่งเหยิงจำนวนมากและทำให้ฉันเพิ่มแพ็คเกจได้ง่ายขึ้น
13 org-mode  latex 

2
ดูเหมือน 'python-shell-interpreter' ของคุณดูเหมือนจะไม่รองรับ readline
ฉันมีปัญหานี้กับ 25.1 และ Python 3.5 ของฉันบน Ubuntu 16.10 แต่ฉันไม่เห็นว่ามันถูกแก้ไขที่ใด สงสัยว่าสถานะล่าสุดคืออะไร การทำซ้ำ: > emacs -Q --eval '(setq python-shell-interpreter "python3")' แล้วก็ M-x run-python จะช่วยให้ Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native’ was t and "python3" is not part of the ‘python-shell-completion-native-disabled-interpreters’ list. Native completions have been disabled locally. …
13 python  repl 

2
วิธีซ่อนตัวคั่นบล็อก SRC
มีวิธีเก็บรักษาซอร์สโค้ดเฉพาะไว้ในซอร์สโค้ดหรือไม่ซึ่งทำให้ # + BEGIN_SRC และ # + END_SRC มองไม่เห็น? มันเป็นเครื่องสำอาง แต่มันทำให้สิ่งต่าง ๆ ชัดเจนขึ้นเมื่อเราต้องจัดการกับตัวอย่างรหัสย่อจำนวนมาก สำหรับตัวอย่าง: (defun org-xor (a b) "Exclusive or." (if a (not b) b)) แทน : #+BEGIN_SRC emacs-lisp (defun org-xor (a b) "Exclusive or." (if a (not b) b)) #+END_SRC
13 org-mode 

3
วิธีที่รวดเร็วในการปิดทั้งหมดยกเว้นหน้าต่างเดียวและกลับไปสู่การตั้งค่าหน้าต่างก่อนหน้าหรือไม่
ฉันต้องการปิดหน้าต่างทั้งหมดของฉัน แต่หน้าต่างปัจจุบันและเพิ่มเฟรมให้ใหญ่ที่สุดเพื่อที่ฉันจะได้เห็นทุกอย่างในบัฟเฟอร์ในหน้าต่างนั้นอย่างรวดเร็วจากนั้นกลับสู่การตั้งค่าหน้าต่างก่อนหน้าของฉัน ฉันจะทำสิ่งนี้อย่างไร
13 window  frames 

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 

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