Quero que as tags <kbd> do meu blog sejam escritas no modo organizacional


16

Escrevo e publico meu blog com o modo org e a página org. A questão é que eu quero escrever sobre o Emacs e gostaria de destacar as teclas digitadas como o Stack Exchange faz com a <kbd>tag. Entendendo isso: em C-x C-fvez de outra coisa!

De que maneira ou como eu poderia conseguir isso?

Respostas:


15

Aqui está o que eu uso no meu 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)))))

Chame-o chamando C-c k.

  1. Ele solicitará uma chave como C-h kfaria.
  2. Ele insere essa chave envolvida em <kbd>tags com escape .
  3. Se você pressionar RET, ele inserirá as tags e deixará o ponto dentro (em vez de inserir qualquer tecla), para que você possa digitar teclas mais complicadas.
  4. Ele ainda tem algum código para torná-lo utilizável fora do org-mode!

1
seu blog parece legal, aliás. Você escreve no modo org, certo? como você publica?
shackra

2
@JorgeArayaNavarro Eu uso uma versão fortemente corrigida do boi-jekyll . Eu pretendo postar um blog sobre isso, mas o patch tem 200 linhas de código, então provou ser um desafio.
Malabarba 15/10

1
Qual é a diferença entre (define-key org-mode-map (kbd "C-c k") #'endless/insert-key)e (define-key org-mode-map (kbd "C-c k") 'endless/insert-key)?
shackra

2
@JorgeArayaNavarro Veja minha resposta para este comentário
Malabarba 15/15

2
Agradável. E se você quiser cada chave individual na seqüência como uma etiqueta separada, basta alterar (help-key-description key nil)a(mapconcat 'identity (split-string (help-key-description key nil)) "</kbd><kbd>")
phils
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.