Emacs

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

3
จะลบมาโคร LaTeX ในขณะที่รักษาเนื้อหาข้อความได้อย่างไร
ใน TeXStudio โดยการกดALT+ DELในแมโคร LaTeX เช่นนี้\macroname{content}ในขณะที่เคอร์เซอร์ยืนอยู่ก่อนหน้าแรก{จะทำให้การลบทั้งหมดยกเว้นcontent(ดังแสดงด้านล่าง) วางเคอร์เซอร์ (จุด) ไว้หน้าวงเล็บปีกกาแรก: กดALT+ DELและคุณจะได้รับ: ทำอย่างไรจึงจะได้สิ่งนี้ใน Emacs? ปรับปรุง ตามการชี้แจงของ T.Verron มีปัญหาC-c C-f C-dเนื่องจากมันบ่นจากข้อผิดพลาดของวงเล็บไม่สมดุลเมื่อดำเนินการภายในแมโครบางตัวใน LaTeX ลองพิจารณาตัวอย่างด้านล่าง: พ่นข้อผิดพลาดนี้: up-list: Scan error: "Unbalanced parentheses", 8074, 1. \ textenglish {} เป็นของแพ็คเกจ polyglossia วิธีกำจัดข้อแม้นี้
11 latex  auctex 

3
วิธีทำให้การเติมข้อความอัตโนมัติทำงานในโหมด AucTeX
ฉันต้องการauto-complete(ac) ให้ทำงานเมื่อฉันอยู่ในAucTeXโหมด ฉันได้รับแพ็คเกจทั้งหมดจาก MELPA โดยการติดตั้งแพ็คเกจ นี่คือรหัสที่เกี่ยวข้องในinit.elไฟล์ของฉัน: (require 'package) (package-initialize) (require 'auto-complete-config) (ac-config-default) (global-auto-complete-mode t) ที่คุณสามารถดูแม้ว่าผมตั้งทั่วโลกก็ไม่ได้ปรากฏในac AucTeXอย่างไรก็ตามตามคำแนะนำในนี้EmacsWiki , acโหมดการแสดงในแถบสถานะในAucTeXแต่ไม่ใช่การทำงานไม่มีอัตโนมัติเสร็จโดยตัวละครพิมพ์ Notes Emacs 24.4 ภายใต้ Windows 7 32 บิตและแพ็คเกจได้รับการอัพเดต

1
การกำหนดขอบเขตตัวแปรสำหรับมาโครเป็นอย่างไร
macro.elใช้แมโครตัวอย่างต่อไปนี้ที่กำหนดไว้ใน (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) และสามารถใช้ฟังก์ชั่นดังต่อไปนี้กำหนดไว้ในแฟ้มที่แตกต่างกันfunction.el , (defun some-function () (some-macro (do-something))) เมื่อfunction.elใดที่คอมไพล์ด้วยไบต์จะsome-variableถูกผูกไว้ภายใต้การรวมคำหรือแบบไดนามิก? ฉันเข้าใจว่าสิ่งนี้ขึ้นอยู่กับว่าไฟล์นั้นใช้-*- lexical-binding: t; -*-หรือไม่ดังนั้นคำถามของฉันเกี่ยวกับสถานการณ์ต่อไปนี้โดยเฉพาะ: หากfunction.elใช้การเชื่อมศัพท์ แต่macro.elไม่ หากmacro.elใช้การเชื่อมศัพท์ แต่function.elไม่ มันสร้างความแตกต่างถ้าsome-varมีการประกาศทั่วโลก (มี defvar) ภายในfunction.el? ถ้าไม่ฉันสนใจโดยเฉพาะในกรณีที่มันไม่ได้

2
ฉันจะขอให้เว็บเซิร์ฟเวอร์แสดงหน้าเว็บที่เป็นมิตรกับมือถือของพวกเขาด้วย eww ได้อย่างไร
ฉันใช้ewwเมื่อเร็ว ๆ นี้เพื่อเรียกดูเว็บเพื่อค้นหาเอกสารและสิ่งต่าง ๆ เช่นนั้น ฉันไม่ชอบที่ewwได้รับหน้าเว็บเดียวกับที่เป็น Firefox หรือ Google Chrome แต่ก็ไม่สามารถแสดงหน้าเว็บได้เหมือนที่เว็บเบราว์เซอร์ทำ จากนั้นสิ่งที่ฉันต้องการบรรลุคือewwบอกเว็บไซต์ว่ามีการเยี่ยมชมที่ส่งหน้าเว็บที่เป็นมิตรกับมือถือดังนั้นฉันจะมีเลย์เอาต์ที่เรียบง่ายขึ้นeww(หรืออย่างน้อยก็เป็นสมมติฐานของฉัน)
11 eww 

3
ฟังก์ชั่นการรวมสองรายการคุณสมบัติ?
ฉันไม่พบฟังก์ชันไลบรารี Elisp มาตรฐานเพื่อรวมสองรายการคุณสมบัติเช่นนี้: (setq pl nil) (setq pl (plist-put pl 'key-1 'value-1)) (setq pl (plist-put pl 'key-2 'value-2)) ฉันสามารถสร้างบางอย่างด้วยdolistแต่ก่อนที่ฉันจะทำฉันต้องการตรวจสอบว่าฉันไม่ได้มองเห็นฟังก์ชั่นที่มีอยู่ในห้องสมุดบางแห่ง อัพเดทตามความคิดเห็น : ในการตอบสนองต่อความคิดเห็น "หลายวิธี": ฉันคิดว่าไม่มีฟังก์ชั่นดังกล่าวเพราะมีคำตอบที่แตกต่างกัน (และอาจเป็นไปได้) สำหรับคำถาม: จะทำอย่างไรเมื่อคุณมีชื่อคุณสมบัติที่ซ้ำกันด้วยค่าที่แตกต่างกัน? ใช่มีคำถามเกี่ยวกับวิธีการรวมรายการที่ซ้ำกัน แต่มีวิธีการค่อนข้างน้อยในการจัดการ ฉันเห็นสองแนวทางทั่วไป ขั้นแรกคำสั่งอาร์กิวเมนต์สามารถแก้ไขรายการที่ซ้ำได้ เช่นขวาสุดชนะในขณะที่การผสาน Clojure ของ ประการที่สองการผสานอาจมอบหมายให้ผู้ใช้ที่ให้ฟังก์ชั่นการโทรกลับในขณะที่การผสานทับทิม ไม่ว่าในกรณีใดความจริงที่ว่ามีวิธีการทำที่แตกต่างกันก็ไม่ได้ป้องกันไม่ให้ห้องสมุดมาตรฐานภาษาอื่น ๆ อีกมากมายไม่สามารถจัดเตรียมฟังก์ชันการผสานได้ อาร์กิวเมนต์ทั่วไปเดียวกันสามารถพูดได้ของการเรียงลำดับและยัง Elisp ให้ฟังก์ชั่นการเรียงลำดับ "คุณอธิบายได้ไหม?" / "โปรดระบุพฤติกรรมที่คุณต้องการอย่างแม่นยำ" โดยทั่วไปแล้วฉันเปิดรับสิ่งที่ชุมชน Elisp ใช้ หากคุณต้องการตัวอย่างที่เฉพาะเจาะจงนี่คือตัวอย่างหนึ่งที่สามารถใช้งานได้: (a-merge-function '(k1 …

2
ฉันจะวาดองค์ประกอบ UI แบบพิกเซลหรือแบบเวกเตอร์ใน Emacs ได้อย่างไร
โดยที่ฉันหมายถึงองค์ประกอบ UI (ตัวอย่างเช่นฟิลด์ข้อความและปุ่มภาพเคลื่อนไหว) ที่ไม่ได้ จำกัด อยู่ที่กริดอักขระแบบโมโนสเกลของเทอร์มินัลอีมูเลเตอร์ ฉันแค่อยากรู้ว่ามันเป็นไปได้อย่างไรและมันเป็นไปได้อย่างไรและถ้ามันเป็นไปไม่ได้
11 elisp  editing  images 

2
ใช้สองโหมดหลักแผนที่ในบัฟเฟอร์เดียวกัน
ฉันพบสถานการณ์บางอย่างที่สะดวกสบายอย่างยิ่งที่จะต้องมี keymap ของหนึ่งในโหมดหลักที่ทำหน้าที่เป็นทางเลือกหลักสำหรับทางเลือกหลักอื่น ๆ ตัวอย่างเช่น ผมเขียนจำนวนมากของน้ำยางในบางส่วนของเอกสารที่องค์กรของฉันดังนั้นมันจะดีที่จะมีคำสั่งอย่างที่มีอยู่ในขณะที่การแก้ไขlatex-mode org-mode ฉันบ่อยห้อง IRC ด้วยการสนับสนุน Markdown ดังนั้นมันก็จะดีที่จะมีmarkdown-modekeybinds erc-modeเพิ่มไปยัง ในทั้งสองกรณีคีย์แมปพิเศษนี้ควรทำหน้าที่เป็นทางเลือก (นี่คือสาเหตุที่ฉันไม่สามารถใช้โหมดรองสำหรับสิ่งนี้ได้) ฉันไม่ต้องการให้คำสั่งลาเท็กซ์แทนที่org-modeปุ่มใด ๆ สิ่งที่ฉันต้องการคือ ถ้าคีย์ถูกกำหนดในlatex-mode-mapและมันไม่ได้กำหนดไว้ใน org-mode-mapจากนั้นใช้latex-mode-mapมีผลผูกพัน ถาม:ฉันจะตั้งค่าคีย์แมปเป็นคีย์ลัดสำหรับโหมดหลักได้อย่างไร หรือ Q:จะสามารถคัดลอกคีย์จาก main-mode-map ไปยังที่อื่นได้อย่างไร เพียงเพื่อให้ชัดเจน ฉันรู้ว่าฉันสามารถกำหนดปุ่มเหล่านี้ทีละหนึ่ง แต่มันจะสะดวกกว่าอนันต์ที่จะมีทางออกอัตโนมัติ

1
ฉันจะระบุใบหน้าที่กำหนดเองด้วย font-lock-defaults ได้อย่างไร
หากฉันกำหนดคีย์เวิร์ดให้ล็อคแบบอักษรโดยใช้ใบหน้าที่มีอยู่ฉันสามารถไฮไลต์สตริง 'foo' (defconst my-mode-font-lock-keywords (list (cons "foo" 'font-lock-type-face))) (define-derived-mode my-mode fundamental-mode "My mode" "A demo mode." (set (make-local-variable 'font-lock-defaults) '(my-mode-font-lock-keywords))) ไฮไลท์นี้ถูกต้อง: อย่างไรก็ตามถ้าฉันกำหนดใบหน้าของตัวเอง: (defface my-mode-foo-face '((t :inherit font-lock-preprocessor-face)) "Face for highlighting 'foo'.") (defconst my-mode-font-lock-keywords (list (cons "foo" 'my-mode-foo-face))) (define-derived-mode my-mode fundamental-mode "My mode" "A demo mode." (set (make-local-variable 'font-lock-defaults) '(my-mode-font-lock-keywords))) ไม่มีการนำไฮไลต์ไปใช้: …

1
กำหนดปุ่มควบคุม + Shift โดยไม่ต้อง kbd
ฉันพยายามเพิ่มฟังก์ชั่นบางอย่างให้กับแพ็คเกจของคนอื่นดังนั้นฉันจึงต้องการเคารพรูปแบบของพวกเขา kbdแต่น่าเสียดายที่หนึ่งในรูปแบบเหล่านี้คือการไม่ใช้ ฉันจำเป็นต้องผูกฟังก์ชั่นให้C-S-bแต่ฉันไม่สามารถหาวิธีได้ ฉันรู้วิธีการทำสิ่งนี้ด้วยตัวดัดแปลงเดียว (เช่น"\S-b") แต่ฉันไม่สามารถทำให้มันทำงานร่วมกับตัวดัดแปลงหลายตัวได้ ฉันรู้ว่าฉันสามารถประเมิน(kbd "C-S-b")และใช้ผลลัพธ์ของมัน ( [33554434]) แต่ฉันต้องการให้อ่านง่ายขึ้น นี่คือบางสิ่งที่ฉันได้ลอง: (define-key emacs-lisp-mode-map "\C-\S-b" 'test-command) ;;; Invalid modifier (define-key emacs-lisp-mode-map [C-S-b] 'test-command) ;;; Does nothing (define-key emacs-lisp-mode-map "\C-B" 'test-command) ;;; Binds C-b

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

4
จะทำให้ Mx และ Ch f แชร์ประวัติได้อย่างไร
เป็นเรื่องปกติที่ฉันจะตรวจสอบเอกสารของคำสั่งด้วยC-h fแล้วให้เรียกใช้คำสั่งM-xทันทีหลังจากนั้น ตอนนี้วิธีที่สั้นที่สุดที่ฉันพบว่า "เรียกใช้คำสั่งดูครั้งสุดท้าย" คือการคัดลอกชื่อ (ไม่ว่าจะเป็นจากบัฟเฟอร์ความช่วยเหลือหรือจากประวัติ) และดึงมันลงในM-xพรอมต์ของ minibuffer สิ่งที่ผมจะชอบเป็นชื่อคำสั่งที่กำหนดให้ เป็นส่วนหนึ่งของประวัติศาสตร์ของdescribe-function ดังนั้นผมก็สามารถทำexecute-extended-commandM-x M-p RET วิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร?

1
หลามอัตโนมัติเยื้องปัญหา
ฉันใช้ Emacs 24.4 เมื่อเขียนโค้ดไพ ธ อน Emacs จะทำงานผิดปกติด้วยความเยื้อง ตัวอย่างเช่น: for i in range(10): print(i) for i in range(10) เมื่อฉันป้อนข้อมูล:Emacs จะเพิ่มการเยื้องที่ไม่จำเป็นที่จุดเริ่มต้นของบรรทัดที่สาม นี่มันแปลกมากนี่เป็นข้อผิดพลาดหรือไม่?

1
ระบายสีระดับการเยื้อง
พิจารณาภาพรวมสองภาพต่อไปนี้: ภาพด้านล่างแรกมาจาก Emacs ในโหมด Python (ด้วย Jedi & Elpy) ภาพที่สองด้านล่างนี้มาจากการถ่ายภาพด้วยตนเองก่อนหน้านี้เพื่อให้ง่ายต่อการแยกความแตกต่างระหว่างระดับการเยื้องจำนวนมาก มีแพ็คเกจใดบ้างที่สามารถช่วยให้เกิดผลภายหลัง ในตัวอย่างข้างต้นฉันใช้สองสี (เพียงพอที่จะแยกระดับการเยื้องจากเพื่อนบ้านของพวกเขา) แต่โทนสีอื่น ๆ ที่ใช้สีอื่น ๆ อาจทำให้การนำทางง่ายขึ้น โปรดทราบว่าใน Emacs อักขระการย่อหน้าจะถูกกำหนดโดย: # Insert multiple spaces for indentation: (setq indent-tabs-mode nil) # Insert TAB for indentation: (setq indent-tabs-mode nil)

3
ฉันจะรับ C / C ++ แบบคำนึงถึงบริบทกับ บริษัท ได้อย่างไร
Semantic ดูเหมือนว่าจะสามารถทำเช่นนี้ได้ แต่ฉันไม่สามารถทำงานได้ตามที่คาดหวัง ตัวอย่างเช่นถ้าฉัน#include "Type.h"และประกาศการType tใช้semantic-complete-analyze-inlineเมื่อจุดอยู่หลังจากt.ให้ฉันข้อผิดพลาดอย่างสม่ำเสมอ ไม่พบประเภทสำหรับ `ประเภท t ' แทนที่จะให้สมาชิกทุกคนในที่สาธารณะ (หรือเหมาะสม) แก่tฉัน ฉันจะรับผลลัพธ์ที่ต้องการได้อย่างไร โดยอุดมคติแล้วฉันจะใช้ความหมายใดก็ได้ที่ความหมายอาจให้เป็นแบ็กเอนด์สำหรับ บริษัท

2
แปลงคีย์ปกติเป็นคีย์ตัวดัดแปลง
ฉันมีแป้นพิมพ์ซึ่งด้วยเหตุผลลึกลับบางคุณสมบัติที่สำคัญที่ส่งสัญลักษณ์ดอลลาร์เดนมาร์ก OS X เป็น §- ด้วยการเปลี่ยนแปลงก็จะส่งบวก / ลบสัญลักษณ์ ±- เป็นไปได้ไหมที่ Emacs จะเห็น§กุญแจและแปลงมันให้เป็นไฮเปอร์หรือซุปเปอร์? ดังนั้นถ้าฉัน§กดปุ่มfนั้นค้างไว้มันจะเปิดใช้งานH-fใน Emacs ฉันได้ลองสิ่งต่อไปนี้ซึ่งใช้งานไม่ได้: (define-key key-translation-map (kbd "§") (kbd "<Hyper>")) มันแค่บอกว่า<Hyper> is undefinedกดปุ่มและไม่ได้ทำหน้าที่เป็นตัวดัดแปลงเลย สิ่งนี้ยังใช้งานไม่ได้: (define-key key-translation-map (kbd "§") "<Hyper>") ที่เพิ่งเปลี่ยน§กุญแจเป็น<กุญแจ

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