ฉันต้องการให้แท็ก <kbd> สำหรับบล็อกของฉันเขียนในโหมดองค์กร


16

ฉันเขียนและเผยแพร่บล็อกของฉันด้วยโหมดองค์กรและหน้าองค์กร สิ่งที่ฉันต้องการเขียนเกี่ยวกับ Emacs และฉันต้องการให้การกดแป้นถูกเน้นเป็น Stack Exchange ทำกับ<kbd>แท็ก ได้รับสิ่งนี้: C-x C-fแทนที่จะเป็นอย่างอื่น!

ฉันจะทำสิ่งนี้ได้อย่างไร?

คำตอบ:


15

นี่คือสิ่งที่ผมใช้สำหรับบล็อกของฉัน

(define-key org-mode-map "\C-ck" #'endless/insert-key)
(defun endless/insert-key (key)
  "Ask for a key then insert its description.
Will work on both org-mode and any mode that accepts plain html."
  (interactive "kType key sequence: ")
  (let* ((is-org-mode (derived-mode-p 'org-mode))
         (tag (if is-org-mode
                  "@@html:<kbd>%s</kbd>@@"
                "<kbd>%s</kbd>")))
    (if (null (equal key "\r"))
        (insert
         (format tag (help-key-description key nil)))
      (insert (format tag ""))
      (forward-char (if is-org-mode -8 -6)))))

C-c kเรียกโดยเรียก

  1. มันจะพร้อมท์ให้คุณรับรหัสที่ต้องการC-h kทำ
  2. มันแทรกกุญแจสำคัญใน<kbd>แท็กหนี
  3. หากคุณกดปุ่มRETมันจะแทรกแท็กและออกจากจุดด้านใน (แทนที่จะใส่คีย์ใด ๆ ) เพื่อให้คุณสามารถพิมพ์คีย์ที่ซับซ้อนมากขึ้น
  4. มันยังมีรหัสบางอย่างเพื่อให้ใช้งานได้นอกorg-mode!

1
บล็อกของคุณดูเท่ห์ btw คุณเขียนมันลงในโหมดองค์กรใช่ไหม? คุณจะเผยแพร่ได้อย่างไร
shackra

2
@JorgeArayaNavarro ผมใช้รุ่น patched อย่างหนักของวัว Jekyll ฉันตั้งใจจะเขียนบล็อกเกี่ยวกับเรื่องนี้ แต่ตัวแก้ไขมีรหัส 200 บรรทัดดังนั้นจึงพิสูจน์ได้ว่าเป็นเรื่องที่ท้าทาย
Malabarba

1
ความแตกต่างระหว่าง(define-key org-mode-map (kbd "C-c k") #'endless/insert-key)และ(define-key org-mode-map (kbd "C-c k") 'endless/insert-key)คืออะไร?
shackra

2
@JorgeArayaNavarro ดูคำตอบของฉันสำหรับความคิดเห็นนี้
Malabarba

2
ดี และหากคุณต้องการให้แต่ละคีย์ในลำดับเป็นแท็กแยกกันให้เปลี่ยน(help-key-description key nil)เป็น(mapconcat 'identity (split-string (help-key-description key nil)) "</kbd><kbd>")
phils
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.