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

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

1
วิธีใช้ไฟล์ที่ทำเครื่องหมาย Dired เป็นอาร์กิวเมนต์ของฟังก์ชัน Emacs Lisp ตามอำเภอใจ?
Dired ให้ฉันทำเครื่องหมายไฟล์และส่งชื่อเป็นอาร์กิวเมนต์ไปยังคำสั่งเชลล์โดยพลการ ฉันต้องการวิธีที่จะระบุชื่อที่ทำเครื่องหมายไว้เป็นอาร์กิวเมนต์ของฟังก์ชัน Emacs Lisp ไม่ว่าจะเป็นในตัวหรือที่ฉันเขียนเอง
10 elisp  dired 


2
โปรแกรมแทรกไฟล์ลงในบัฟเฟอร์ Dired
ฉันมีรายการชื่อไฟล์ (พร้อมเส้นทางแบบเต็ม) และฉันต้องการสร้างบัฟเฟอร์ Dired ที่แสดงรายการชุดไฟล์นี้ ฉันจะทำยังไงต่อไป? ฉันจะสร้างบัฟเฟอร์ Dired จากรายการชื่อไฟล์ได้อย่างไร โดยไม่ต้องใช้การอ้างอิงภายนอก
10 elisp  dired  files 

4
จะเปลี่ยนข้อความ minibuffer เริ่มต้นได้อย่างไร
หลังจากโหลดไฟล์เสร็จฉันได้รับข้อความนี้ใน minibuffer: สำหรับข้อมูลเกี่ยวกับ GNU Emacs และระบบ GNU ให้พิมพ์ Ch Ca มันถูกกระตุ้นโดยอะไรและฉันจะเปลี่ยนมันได้อย่างไร

2
ควรใช้คำพูดที่คมชัดเมื่อใด
ฉันเห็นคำพูดที่คมชัดถูกใช้ในรหัส eLisp ของผู้อื่นและฉันใช้มันด้วยตัวเอง แต่ฉันไม่ชัดเจนว่าเมื่อใดที่เหมาะสมและเมื่อไม่เหมาะสม ทุกคนสามารถอธิบายได้อย่างชัดเจนว่าเมื่อใดควรใช้เครื่องหมายคำพูดแหลมคมและควรใช้คำพูดเดี่ยวทั่วไปแทนหรือไม่
10 elisp  functions  quote  style 

2
เป็นไปได้หรือไม่ที่จะแนบสตริงเอกสารที่สร้างขึ้นกับแลมบ์ดา?
Emacs docs บอกว่าเมื่อมีการวางสตริง doc ไว้ภายในlambdaหรือdefunเป็น“ เก็บไว้ในฟังก์ชันวัตถุ” โดยตรง อย่างไรก็ตามเราสามารถเปลี่ยนเอกสารของฟังก์ชั่นที่มีชื่อดังนี้: (put 'my-function-name 'function-documentation "Blah.") แต่เคล็ดลับแบบเดียวกันนั้นใช้ไม่ได้กับลูกแกะ มีวิธีเพิ่มเอกสารในแลมบ์ดาหรือไม่? หรืออย่างใดอย่างหนึ่งสร้างตัวอักษร doc- สตริงแบบไดนามิก? หากต้องการชี้แจงให้จินตนาการถึงสถานการณ์ต่อไปนี้: (let ((foo 1) (bar 2)) (lambda () (+ foo bar))) ผมอยากแลมบ์ดาที่จะมีสตริง doc ที่กล่าวถึงคุณค่าของและfoobar

3
พื้นหลังซ่อนโหมด hl-line-mode จะหลีกเลี่ยงได้อย่างไร
ด้วย: (when window-system (set-face-background 'hl-line "light yellow") (global-hl-line-mode 1)) บรรทัดปัจจุบันเน้นด้วยพื้นหลังสีเหลือง แต่ถ้าข้อความมีคุณสมบัติพื้นหลังก็ยังเขียนทับ (เช่นโหมด diff, โหมดสายรุ้ง) เป็นไปได้ไหมที่จะตั้งพื้นหลังสำหรับชิ้นส่วนที่ไม่มีคุณสมบัติที่เหมาะสม? อัปเดตฉันเริ่มทดลองดูเหมือนว่าไม่เป็นระเบียบไม่ได้ขัดแย้งกับพื้นหลัง: (set-face-stipple 'hl-line '(4 4 "\x01\x00\x00\x00")) (set-face-attribute 'hl-line nil :inherit nil) แต่น่าเสียดายที่แต้มน่าเสียดายที่สร้างความเสียหายให้กับข้อความ ...

3
ฉันจะตอบรับคำสั่ง minibuffer จาก elisp ได้อย่างไร
ฉันพบว่าตัวเองใช้ฟังก์ชั่นอินเทอร์แอคทีฟภายในฟังก์ชั่นที่ฉันเขียนเพื่อใช้งานเอง หากฟังก์ชั่นขอข้อมูลบางอย่าง (เช่น "ไฟล์ที่ส่งออก: ~ /") มีวิธีการเพิ่มข้อความทั่วไปใน minibuffer แล้วกด enter เพื่อให้ผู้ใช้ไม่ต้องทำเช่นนั้น? ตัวอย่างเช่นสมมติว่าฉันต้องการเรียกใช้org-latex-export-to-pdfภายในฟังก์ชัน แต่ฉันไม่ต้องการให้ผู้ใช้ต้องระบุชื่อไฟล์ การวิ่ง(org-latex-export-to-pdf)จะย้ายจุดไปที่มินิบัสเกอร์ แต่การวางบางอย่าง(insert "filename.tex")ในบรรทัดถัดไปดูเหมือนจะไม่ทำงาน
10 elisp 

5
วิธีการเข้าสู่โหมดดูอย่างเดียวเมื่อเรียกดูซอร์สโค้ด Emacs จากความช่วยเหลือ?
เมื่อฉันเรียกดู Emacs ช่วยฟังก์ชั่นผ่านC-h fฉันมักจะมองเข้าไปในการใช้งาน Elisp / C ฉันต้องการป้อนview-modeอัตโนมัติเมื่อฉันเข้าถึงซอร์สโค้ดด้วยวิธีนี้เพื่อหลีกเลี่ยงการแก้ไขที่ไม่จำเป็น มีตะขอหรือฟังก์ชั่นที่ฉันสามารถแนะนำให้ทำสิ่งนี้ได้หรือไม่?

1
การใช้งาน request.el ง่าย ๆ
คำถามง่าย ๆ ของฉันน่าอายคือต่อไปนี้: ทำไมรหัสต่อไปนี้จึงใช้งานได้: (require 'request) (defun geocoder () (request "http://rpc.geocoder.us/service/csv" ;;; **Hardcoded parameter!** :params '(("address" . "1600 Pennsylvania Ave, Washington DC")) :parser 'buffer-string :success (function* (lambda (&key data &allow-other-keys) (when data (with-current-buffer (get-buffer-create "*request demo*") (erase-buffer) (insert data) (pop-to-buffer (current-buffer)))))) :error (function* (lambda (&key error-thrown &allow-other-keys&rest _) (message "Got …
9 elisp 

2
จะทราบเวอร์ชั่นของแพ็คเกจที่ต้องใช้ในแพ็คเกจของคุณได้อย่างไร?
ฉันมีแพ็กเกจสองสามอันในตอนนี้และในส่วน PackageRequires ฉันต้องการที่จะนำแพคเกจทั้งหมดที่ฉันต้องการมาใส่ดูเหมือนว่ามันต้องใช้ชื่อและเวอร์ชัน คุณจะกำหนดหมายเลขรุ่นที่ไหน? ตัวอย่างเช่นฉันมี (cl-lib "0.5") แต่อะไรคือวิธีที่ดีที่สุดในการกำหนดเวอร์ชันขั้นต่ำที่ฉันสามารถใช้ได้ ฉันสามารถดูเวอร์ชันปัจจุบันได้ แต่วิธีที่ดีที่สุดในการกำหนดค่าต่ำสุดคืออะไร นอกจากนี้แพคเกจบางอย่างที่จำเป็นไม่มีเวอร์ชันที่ระบุในไฟล์ ในกรณีเหล่านี้แนะนำอะไรบ้าง
9 elisp  package 

3
จะควบคุมตำแหน่งที่จะแสดงบัฟเฟอร์คำหลัก org todo ได้อย่างไร
ถาม : ฉันจะควบคุมตำแหน่งที่จะให้orgบัฟเฟอร์คำหลักที่ต้องทำปรากฏได้อย่างไร การป้อนtodoคำหลักด้วยC-c C-t( org-todo) จะเปิดบัฟเฟอร์ใหม่พร้อมตัวเลือกคำหลักแล้วปิดอีกครั้งหลังจากที่ฉันเลือก จนถึงตอนนี้ดีมาก อย่างไรก็ตามจะใช้เวลาข้ามหน้าต่างอื่นในการทำเช่นนั้นซึ่งไม่ค่อยดีนักโดยเฉพาะอย่างยิ่งเนื่องจากต้องการแสดงบรรทัดหนึ่งหรือสองด้วยคำหลัก ดังนั้นด้วยรูปแบบต่อไปการกดปุ่มC-c C-tในขณะที่อยู่ในหน้าต่างด้านซ้าย ( some-org-buffer) จะเปิด*Org todo*ในหน้าต่างด้านขวา: +---------------------+---------------------+ | | | | | | | | | | | | | some-org-buffer | some-other-buffer | | | | | | | | | | | | | +---------------------+---------------------+ แต่ฉันต้องการให้มีหน้าต่างเล็ก ๆ ปรากฏขึ้นแยกเป็นแนวตั้งดังนี้: +---------------------+---------------------+ …

1
วิธีการสลับบล็อกซอร์สโค้ด Org โหมดบล็อก“: eval no”
ฉันมักจะ จำกัด หรือไม่ จำกัด การประเมินผลของการบล็อกรหัสเฉพาะในโหมด babel โดยใช้:evalอาร์กิวเมนต์ส่วนหัว นี่คือตัวอย่าง: #+BEGIN_SRC emacs-lisp :results value scalar :eval no (+ 1 1) #+END_SRC #+RESULTS: : 2 ฉันสลับบล็อคโค้ดระหว่าง:eval noและ:eval n(หรือลบ:eval noทั้งหมด) ด้วยมือ #+PROPERTY: eval no สะดวก แต่ไม่เหมาะสำหรับการบล็อกโค้ดแต่ละรายการ มีวิธีใดที่ดีกว่าในการสลับ:evalสถานะให้สะดวกเช่นด้านล่าง? C-c C-t (org-todo) Rotate the TODO state of the current item among (unmarked) -> TODO -> DONE
9 org-mode  elisp 

4
คัดลอกสตริงใน Elisp หรือไม่?
ฉันมีสตริงที่ถูกต้อง ฉันต้องการทำสำเนาลึกของมันเพื่อเพิ่มคุณสมบัติมากขึ้นในขณะที่รักษาคุณสมบัติในสายเดิม ฉันจะทำสิ่งนั้นได้อย่างง่ายดาย ตัวอย่าง ประเมินหนึ่งต่อหนึ่ง: (setq test-str-1 #(";; This `is' a test" 0 3 (fontified nil face font-lock-comment-delimiter-face) 3 9 (fontified nil face font-lock-comment-face) 9 11 (fontified nil face (font-lock-constant-face font-lock-comment-face)) 11 19 (fontified nil face font-lock-comment-face))) (setq test-str-2 (concat test-str-1)) (add-face-text-property 0 (length test-str-2) 'foobar t test-str-2) และผลลัพธ์: test-str-2 …
9 elisp 

4
วิธีการตรวจสอบว่าตัวละครปัจจุบันเป็นตัวอักษร
ฉันจะทราบได้อย่างไรว่าตัวละครปัจจุบันเป็นตัวอักษร (ตัวอักษรตัวอักษร) (เช่นเป็นของคลาสไวยากรณ์[:alpha:]ในความคิด regexp) ฉันต้องการเขียนฟังก์ชั่นง่าย ๆ ดังต่อไปนี้: (defun test-letter () (interactive) (if char-after-is-a-letter (message "This is a letter") (message "This is not a letter") ) ) อัปเดต น่าเสียดายที่สมมติฐานของฉันเกี่ยวกับความเท่าเทียมกันของคลาสของตัวอักษรและคลาสไวยากรณ์[:alpha:]ดูเหมือนจะเป็นเท็จ

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