Saya ingin memiliki tag <kbd> untuk blog saya yang ditulis dalam mode org

16

Saya menulis dan menerbitkan blog saya dengan mode-org dan halaman-org. Masalahnya adalah saya ingin menulis tentang Emacs dan, saya ingin penekanan tombol disorot seperti yang dilakukan Stack Exchange dengan <kbd>tag. Mendapatkan ini: C-x C-fbukannya yang lain!

Dengan cara apa atau bagaimana saya bisa mencapai ini?

shackra
sumber

Jawaban:

15

Inilah yang saya gunakan untuk blog saya .

(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)))))

Panggil dengan menelepon C-c k.

  1. Ini akan meminta Anda untuk kunci seperti yang C-h kakan dilakukan.
  2. Ini menyisipkan kunci yang dikelilingi dalam <kbd>tag lolos .
  3. Jika Anda baru saja menekan RET, itu akan menyisipkan tag dan meninggalkan titik di dalam (alih-alih memasukkan kunci apa pun), sehingga Anda dapat mengetikkan tombol yang lebih rumit.
  4. Ia bahkan memiliki beberapa kode untuk membuatnya dapat digunakan di luar org-mode!
Malabarba
sumber
1
blog Anda terlihat keren, btw. Anda menulisnya di mode-org kan? bagaimana Anda mempublikasikannya?
shackra
2
@JorgeArayaNavarro Saya menggunakan versi ox- jekyll yang banyak ditambal . Saya telah bermaksud untuk blog tentang hal itu, tetapi tambalan memiliki 200 baris kode, jadi itu terbukti menjadi sedikit tantangan.
Malabarba
1
Apa perbedaan antara (define-key org-mode-map (kbd "C-c k") #'endless/insert-key)dan (define-key org-mode-map (kbd "C-c k") 'endless/insert-key)?
shackra
2
@JorgeArayaNavarro Lihat jawaban saya untuk komentar ini
Malabarba
2
Bagus. Dan jika Anda ingin setiap kunci individual dalam urutan sebagai tag terpisah, cukup ubah (help-key-description key nil)ke(mapconcat 'identity (split-string (help-key-description key nil)) "</kbd><kbd>")
phils