Je veux que les balises <kbd> de mon blog soient écrites en mode org

16

J'écris et publie mon blog avec org-mode et org-page. Le fait est que je veux écrire sur Emacs et je voudrais que les frappes soient mises en évidence comme le fait Stack Exchange avec la <kbd>balise. Obtenir ceci: C-x C-fau lieu de quelque chose d'autre!

De quelle manière ou comment pourrais-je y parvenir?

shackra
la source

Réponses:

15

Voici ce que j'utilise pour mon blog .

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

Appelez-le en appelant C-c k.

  1. Il vous demandera une clé comme vous le C-h kferiez.
  2. Il insère cette clé dans les <kbd>balises d'échappement.
  3. Si vous venez de frapper RET, il insérera les balises et laissera un point à l'intérieur (au lieu d'insérer n'importe quelle clé), vous pourrez donc taper des touches plus compliquées.
  4. Il a même du code pour le rendre utilisable en dehors de org-mode!
Malabarba
la source
1
votre blog semble cool, btw. Vous l'écrivez en mode org, non? comment le publiez-vous?
shackra
2
@JorgeArayaNavarro J'utilise une version fortement corrigée de ox-jekyll . J'avais l'intention de bloguer à ce sujet, mais le patch a 200 lignes de code, il s'est donc avéré être un peu difficile.
Malabarba
1
Quelle est la différence entre (define-key org-mode-map (kbd "C-c k") #'endless/insert-key)et (define-key org-mode-map (kbd "C-c k") 'endless/insert-key)?
shackra
2
@JorgeArayaNavarro Voir ma réponse à ce commentaire
Malabarba
2
Agréable. Et si vous voulez chaque clé dans la séquence comme une étiquette séparée, il suffit de changer (help-key-description key nil)à(mapconcat 'identity (split-string (help-key-description key nil)) "</kbd><kbd>")
Phils