Я хочу, щоб теги <kbd> для мого блогу були написані в org-режимі


16

Я пишу та публікую свій блог з org-mode та org-page. Вся справа в тому, що я хочу написати про 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. Ви пишете це в org-режимі, правда? як ви його публікуєте?
shackra

2
@JorgeArayaNavarro Я використовую сильно виправлену версію ox-jekyll . Я мав на увазі блог про це, але патч має 200 рядків коду, тому це, як виявилося, є чимось завданням.
Малабарба

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)?
шакра

2
@JorgeArayaNavarro Дивіться мою відповідь на цей коментар
Malabarba

2
Приємно. І якщо ви хочете, щоб кожен окремий ключ у послідовності був окремим тегом, просто перейдіть (help-key-description key nil)до(mapconcat 'identity (split-string (help-key-description key nil)) "</kbd><kbd>")
phils
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.