about summary refs log tree commit diff
path: root/users/grfn
diff options
context:
space:
mode:
Diffstat (limited to 'users/grfn')
-rw-r--r--users/grfn/emacs.d/config.el57
-rw-r--r--users/grfn/emacs.d/org-query.el14
2 files changed, 62 insertions, 9 deletions
diff --git a/users/grfn/emacs.d/config.el b/users/grfn/emacs.d/config.el
index 06178d7cc96e..654b6c5d0fce 100644
--- a/users/grfn/emacs.d/config.el
+++ b/users/grfn/emacs.d/config.el
@@ -467,6 +467,47 @@
 
 (setq projectile-create-missing-test-files 't)
 
+(setq grfn/jira-refs-re
+      (rx line-start
+          (or "Refs" "Fixes")
+          ": "
+          "ENG-" (one-or-more digit)
+          line-end))
+
+(defun grfn/add-jira-reference-to-commit-message ()
+  (interactive)
+  (when (org-tracker-current-backend t)
+    (when-let* ((jira-id (grfn/org-clocked-in-jira-ticket-id)))
+      (save-excursion
+        (save-match-data
+          (goto-char (point-min))
+          ;; Don't add one if we've already got one
+          (unless (search-forward-regexp grfn/jira-refs-re nil t)
+            (or
+             (and
+              (search-forward-regexp (rx line-start "Change-Id:") nil t)
+              (forward-line -1))
+             (and
+              (search-forward-regexp (rx line-start "# Please enter") nil t)
+              (forward-line -2)))
+            (insert (format "\nRefs: %s" jira-id))))))))
+
+(defun grfn/switch-jira-refs-fixes ()
+  (interactive)
+  (save-excursion
+    (save-match-data
+      (if (not (search-forward-regexp grfn/jira-refs-re nil t))
+          (message "Could not find reference to JIRA ticket")
+        (goto-char (point-at-bol))
+        (save-restriction
+          (narrow-to-region (point-at-bol)
+                            (point-at-eol))
+          (or
+           (and (search-forward "Refs" nil t)
+                (replace-match "Fixes"))
+           (and (search-forward "Fixes" nil t)
+                (replace-match "Refs"))))))))
+
 (after! magit
   (map! :map magit-mode-map
         ;; :n "] ]" #'magit-section-forward
@@ -537,7 +578,12 @@
   (transient-append-suffix
     #'magit-branch
     ["c"]
-    (list "M" "Rename branch to Tracker ticket" #'magit-rename-org-tracker-branch)))
+    (list "M" "Rename branch to Tracker ticket" #'magit-rename-org-tracker-branch))
+
+  (add-hook 'git-commit-setup-hook #'grfn/add-jira-reference-to-commit-message)
+  (map! (:map git-commit-mode-map
+         "C-c C-f" #'grfn/switch-jira-refs-fixes))
+  )
 
 ;; (defun grfn/split-window-more-sensibly (&optional window)
 ;;   (let ((window (or window (selected-window))))
@@ -740,15 +786,8 @@
         cider-save-file-on-load 't)
   )
 
-(defun +org-clocked-in-element ()
-  (when-let ((item (car org-clock-history)))
-    (save-mark-and-excursion
-    (with-current-buffer (marker-buffer item)
-      (goto-char (marker-position item))
-      (org-element-at-point)))))
-
 (comment
- (setq elt (+org-clocked-in-item))
+ (setq elt (+org-clocked-in-element))
 
  (eq 'headline (car elt))
  (plist-get (cadr elt) :raw-value)
diff --git a/users/grfn/emacs.d/org-query.el b/users/grfn/emacs.d/org-query.el
index 022832c05fac..49e057da2aa9 100644
--- a/users/grfn/emacs.d/org-query.el
+++ b/users/grfn/emacs.d/org-query.el
@@ -114,3 +114,17 @@
 (comment
  (grfn/org-current-clocked-in-task-message)
  )
+
+(defun grfn/org-clocked-in-jira-ticket-id ()
+  (grfn/at-org-clocked-in-item
+   (org-tracker-backend/extract-issue-id
+    (org-tracker-current-backend)
+    (cadr (org-element-at-point)))))
+
+(comment
+ (grfn/at-org-clocked-in-item
+  (org-tracker-backend/extract-issue-id
+   (org-tracker-current-backend)
+   (cadr (org-element-at-point))))
+
+ )