From ec119361e51d6bb14d02cc1d5678fbe16999c886 Mon Sep 17 00:00:00 2001 From: Wong Ding Feng Date: Mon, 23 Mar 2026 15:36:58 +0800 Subject: [PATCH] feat(ai): add my/copy-region-as-path-tag helper and binding --- ai.el | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/ai.el b/ai.el index d510c85..556dbd7 100644 --- a/ai.el +++ b/ai.el @@ -172,11 +172,30 @@ (gptel-rewrite-region (region-beginning) (region-end) "Fix spelling, grammar, and improve clarity. Keep the same tone and style."))) +(defun my/copy-region-as-path-tag () + "Copy the current region as a path tag: @path/to/file.ext:start-end" + (interactive) + (if (use-region-p) + (let* ((filename (file-relative-name (buffer-file-name) (doom-project-root))) + (start-line (line-number-at-pos (region-beginning))) + ;; If region ends at beginning of a line, we want the previous line + (end-pos (1- (region-end))) + (end-line (line-number-at-pos (max (region-beginning) end-pos))) + (tag (format "@%s:%d-%d" filename start-line end-line))) + (kill-new tag) + (message "Copied: %s" tag)) + (let* ((filename (file-relative-name (buffer-file-name) (doom-project-root))) + (line (line-number-at-pos)) + (tag (format "@%s:%d" filename line))) + (kill-new tag) + (message "Copied: %s" tag)))) + ;; Add keybindings for helper functions (map! :leader (:prefix "A" :desc "Quick explain" "e" #'my/gptel-quick-explain-region - :desc "Proofread text" "p" #'my/gptel-proofread-region)) + :desc "Proofread text" "p" #'my/gptel-proofread-region + :desc "Copy path tag" "t" #'my/copy-region-as-path-tag)) ;;; Claude Code Configuration @@ -332,6 +351,4 @@ ;; (add-hook 'eat-mode-hook ;; (lambda () ;; (setq-local show-trailing-whitespace nil)))) -;; (map! :leader -;; (:prefix ("C" . "claude-code") ;; :desc "Claudemacs menu" "E" #'claudemacs-transient-menu)))