คำถามติดแท็ก elisp

สำหรับคำถามเกี่ยวกับ Emacs Lisp เป็นภาษาเทียบกับภาษาอื่นโดยเฉพาะเมื่อเทียบกับภาษา Lisp อื่น ๆ นั่นคือสำหรับคำถาม * เกี่ยวกับภาษา * นั้น * อย่าใช้มัน * สำหรับคำถามเกี่ยวกับ * โดยใช้ * Emacs Lisp Emacs Lisp เป็นภาษาสคริปต์และการเขียนโปรแกรมที่ตัวแก้ไข Emacs สร้างขึ้น

2
ฉันจะยกเลิกคำจำกัดความสัญลักษณ์ทั้งหมดด้วยคำนำหน้าบางอย่างได้อย่างไร
ฉันกำลังเปลี่ยน API ของแพคเกจของฉันค่อนข้างบ่อย แต่company-modeดึงทุกสัญลักษณ์ที่กำหนดไว้ (เท่าที่ควร) ในการทำให้สมบูรณ์ ฉันไม่ต้องการใช้ชื่อไม่ได้ผูกไว้โดยไม่ตั้งใจดังนั้นฉันจะยกเลิกการผูกตัวแปรและฟังก์ชั่นทั้งหมดที่ขึ้นต้นด้วยพูดว่าmy-package-อย่างไร หลังจากนี้ฉันจะกลับไปload-fileอีกครั้งได้

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 

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

1
"มัน" มีไว้ทำอะไร?
ตัวอย่างเช่นในคำจำกัดความของ-firstเรามี: (--first (funcall pred it) list)) ความหมายของคำว่า "มัน" นั้นเป็นเรื่องยากมากที่ google หรือค้นหาในคู่มือ
11 elisp  dash.el 

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

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

3
ฟังก์ชัน Emacs ในการแปลง ORG PROPERTY ตามอำเภอใจให้เป็นสตริงโดยพลการ (คือฉลาก LaTeX)?
ฉันมีเอกสารหลายฉบับเป็นไฟล์ org ซึ่งมีคุณสมบัติ CUSTOM_LABEL เช่น * Introduction :PROPERTIES: :CUSTOM_LABEL: AP 1 :END: ในกรณีนี้ไฟล์ที่จะต้องมีการส่งออกเป็นน้ำยางแต่ละแปลเป็นCUSTOM_LABEL ตัวอย่างข้างต้นควรจะแปลให้\label{marker}\label{AP 1} ฉันรู้แล้วว่าจะเรียกใช้ฟังก์ชันที่กำหนดเองในเวลาส่งออกได้อย่างไร แต่ฉันไม่เชี่ยวชาญพอที่จะเขียน defun เพื่อทำการแปลงเฉพาะเช่นCUSTOM_LABEL->\label{} defun สามารถฉีด a custom_labelตามที่\label{}เขียนได้อย่างไร? ฉันจะขอบคุณแม้เพียงบางรหัสหลอกหรือตัวชี้บางอย่าง ฉันถามคำถามนี้ที่นี่แทนที่จะเป็นที่อื่นเพราะนี่เป็นคำถามของ Emacs มากกว่าเนื่องจากฉันค้นหาคู่มือโหมด org อย่างละเอียดและคุณลักษณะประเภทนั้นไม่สามารถใช้งานได้ในขณะนี้ ฟังก์ชั่นทั่วไปเพื่อแปลงคุณสมบัติที่กำหนดเมื่อส่งออก (LaTeX, HTML หรือรูปแบบอื่น ๆ ) จะดียิ่งขึ้น ขอบคุณ.

1
จะดึงเอกสารจากฟังก์ชั่นและตัวแปรได้อย่างไร
ฉันพยายามที่จะเขียนฟังก์ชั่นที่จะดึง docstrings จาก sexps ใด ๆ (def.*)ในแฟ้มที่แข่งขัน ฉันต้องการทั้งสองสามารถเรียกคืนฟังก์ชั่น / มาโครใด ๆ รวมทั้งตัวแปรใด ๆ ที่กำหนดไว้ สำหรับตัวแปรที่ฉันต้องการ docstring ในขณะที่ฟังก์ชั่นใด ๆ ที่ฉันต้องการรายการอาร์กิวเมนต์

3
วิธีที่ดีที่สุดในการเรียกคืนค่าในรายการ assoc-ซ้อนกัน?
สมมติว่าฉันได้รับรายการรองแบบนี้: (setq x '((foo . ((bar . "llama") (baz . "monkey"))))) barและฉันต้องการให้ค่าที่ ฉันสามารถทำสิ่งนี้: (assoc-default 'bar (assoc-default 'foo x)) แต่สิ่งที่ฉันชอบจริงๆคือสิ่งที่ยอมรับได้หลายปุ่มเช่น (assoc-multi-key 'foo 'bar x) สิ่งนั้นมีอยู่จริงหรือเปล่า ฉันแน่ใจว่าฉันสามารถเขียนได้ แต่ฉันรู้สึกว่า Google-fu ของฉันเพิ่งจะล้มเหลวและฉันไม่พบมัน

3
เหตุใดการกำหนดขอบเขตของ defvar จึงแตกต่างกันโดยไม่มีค่าเริ่มต้น
สมมติว่าฉันมีชื่อไฟล์elisp-defvar-test.elที่มี: ;;; elisp-defvar-test.el --- -*- lexical-binding: t -*- (defvar my-dynamic-var) (defun f1 (x) "Should return X." (let ((my-dynamic-var x)) (f2))) (defun f2 () "Returns the current value of `my-dynamic-var'." my-dynamic-var) (provide 'elisp-dynamic-test) ;;; elisp-defvar-test.el ends here ฉันโหลดไฟล์นี้แล้วไปที่บัฟเฟอร์รอยขีดข่วนและเรียกใช้: (setq lexical-binding t) (f1 5) (let ((my-dynamic-var 5)) (f2)) (f1 5)ส่งคืน 5 ตามที่คาดไว้ซึ่งแสดงว่าเนื้อความของf1ถือmy-dynamic-varเป็นตัวแปรที่กำหนดขอบเขตแบบไดนามิกตามที่คาดไว้ …

1
เปลี่ยนชื่อการรีแฟคเตอร์ตัวแปรโลคัล
มีเครื่องมือการรีแฟคเตอร์ elisp ที่สามารถเปลี่ยนชื่อตัวแปรโลคัลและฟังก์ชันอาร์กิวเมนต์ ฉันต้องการที่จะสามารถเปิด: (defun my-func (s r) ... (use s .. r)) เป็น: (defun my-func (string replacement) ... (use string .. replacement)) ใช้วิธีการที่รู้วิธีค้นหาตัวแปรอ้างอิง ฉันโอเคถ้าไม่ใช่ซุปเปอร์ไฮเจนิค
10 elisp 


4
ทำให้การเรียงลำดับความเคารพอ่านเสร็จสมบูรณ์ของคอลเลกชัน
ทั้ง: (completing-read "test: " '("a" "b" "c")) หรือ: (completing-read "test: " '("c" "b" "a")) TABจะให้ผลลัพธ์เดียวกันในบัฟเฟอร์เสร็จสิ้นเมื่อกด ฉันจะทำให้มันเป็นไปตามลำดับการเรียงลำดับได้อย่างไร
10 elisp 

1
จะนับหน้าต่างทั้งหมดในกรอบได้อย่างไร
เช่นเดียวกับคำถามที่ระบุไว้ฉันต้องการฟังก์ชั่นที่จะนับจำนวนหน้าต่างที่กำลังแสดงอยู่ในเฟรมนั้น ดังนั้นนี่คือ: +--------------+-------------+ | | | | | | | *scratch* | *Messages* | | | | | | | | | | +--------------+-------------+ | *Help* | | | +----------------------------+ จะกลับมา => 3 ฉันเริ่มฟังก์ชั่นด้านล่าง: (defun count-windows () "Count how many buffers are currently being shown." (interactive) )
10 elisp  window  frames 

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