org-mode – Haga que se pueda hacer clic en algunas expresiones regulares (como URL) y haga que abran la URL

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

  1. escribir una función insertando los botones deseados y luego
  2. 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))))

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım