Tôi muốn có các thẻ <kbd> cho blog của mình được viết ở chế độ org


16

Tôi viết và xuất bản blog của mình với chế độ org và trang org. Vấn đề là tôi muốn viết về Emacs và, tôi muốn có các tổ hợp phím được tô sáng như Stack Exchange làm với <kbd>thẻ. Lấy cái này: C-x C-fthay vì cái khác!

Bằng cách nào hoặc làm thế nào tôi có thể đạt được điều này?

Câu trả lời:


15

Đây là những gì tôi sử dụng cho blog của mình .

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

Gọi nó bằng cách gọi C-c k.

  1. Nó sẽ nhắc bạn cho một khóa giống như C-h ksẽ làm.
  2. Nó chèn khóa đó được bao quanh trong <kbd>các thẻ thoát .
  3. Nếu bạn chỉ cần nhấn RET, nó sẽ chèn các thẻ và để lại điểm bên trong (thay vì chèn bất kỳ phím nào), vì vậy bạn có thể nhập các phím phức tạp hơn.
  4. Nó thậm chí có một số mã để làm cho nó có thể sử dụng được bên ngoài org-mode!

1
blog của bạn có vẻ mát mẻ, btw. Bạn viết nó trên chế độ org phải không? Làm thế nào để bạn xuất bản nó?
shackra

2
@JorgeArayaNavarro Tôi sử dụng phiên bản vá rất nhiều của ox-jekyll . Tôi đã có ý định viết blog về nó, nhưng bản vá có 200 dòng mã, vì vậy nó được chứng minh là một chút thách thức.
Malabarba

1
Sự khác biệt giữa (define-key org-mode-map (kbd "C-c k") #'endless/insert-key)và là (define-key org-mode-map (kbd "C-c k") 'endless/insert-key)gì?
shackra

2
@JorgeArayaNavarro Xem câu trả lời của tôi cho nhận xét này
Malabarba

2
Đẹp. Và nếu bạn muốn mỗi khóa riêng lẻ trong chuỗi dưới dạng một thẻ riêng biệt, chỉ cần thay đổi (help-key-description key nil)thành(mapconcat 'identity (split-string (help-key-description key nil)) "</kbd><kbd>")
phils
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.