Pregunta:
Utilizo el modo de organización para administrar mis notas y tareas pendientes. En el trabajo, usamos Jira para rastrear errores e historias de desarrollo y me gustaría facilitar esto un poco.
Me gustaría hacer que todos los DEV- [0-9] +, BUG- [0-9] + y algunos otros términos se comporten como una URL normal, de modo que se pueda hacer clic en ellos (no es necesario hacer un enlace explícito en el modo de organización ) y que abren una URL con el término coincidente adjunto.
Entonces, DEV-1234 debería reconocerse como un enlace, y cuando hago clic en él, Emacs debería abrir la URL http: // jira / browse / DEV-1234 .
Si es posible, también me gustaría tener otros términos con otros puntos finales.
Respuesta:
Una forma sencilla es
- escribir una función insertando los botones deseados y luego
- conéctelo con font-lock.
(defvar jira-link-url "http://jira/browse/%s")
(defun jira-link-insert-buttons (beg end)
(remove-overlays beg end 'type 'jira-link)
(save-excursion
(goto-char beg)
(while (re-search-forward "\\_<\\(DEV\\|BUG\\)-[0-9]+\\_>" end t)
(make-button (match-beginning 0)
(match-end 0)
'type 'jira-link
'action (lambda (button)
(browse-url (format jira-link-url (button-get button 'text))))
'follow-link t
'text (match-string 0)))))
(define-minor-mode jira-link-mode nil nil nil nil
(cond
(jira-link-mode
(jit-lock-register #'jira-link-insert-buttons)
(jira-link-insert-buttons (point-min) (point-max)))
(t
(jit-lock-unregister #'jira-link-insert-buttons)
(remove-overlays (point-min) (point-max) 'type 'jira-link))))