From 8088bc51995a0d0945ab671eaba053bfb9a45a72 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 26 Oct 2026 13:01:22 +0100 Subject: [PATCH] pinwheel: Add Emacs command to copy file path with line number --- hosts/pinwheel/modules/emacs/config.org | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/hosts/pinwheel/modules/emacs/config.org b/hosts/pinwheel/modules/emacs/config.org index bef5b24..343372f 100644 --- a/hosts/pinwheel/modules/emacs/config.org +++ b/hosts/pinwheel/modules/emacs/config.org @@ -410,6 +410,32 @@ Setup prefix for keybindings. "t" '(:ignore t :which-key "text") "ts" '(hydra-text-scale/body :which-key "scale text")) #+END_SRC +** Copy file path with line number +#+BEGIN_SRC emacs-lisp + (defun alex/copy-path-with-line () + "Copy /abs/path:LINE, or /abs/path:START-END when a region is active." + (interactive) + (unless buffer-file-name (user-error "Buffer is not visiting a file")) + (let* ((path (expand-file-name buffer-file-name)) + (ref (if (use-region-p) + (let* ((beg (region-beginning)) + (end (if (and (> (region-end) beg) + (save-excursion (goto-char (region-end)) (bolp))) + (1- (region-end)) + (region-end))) + (start-line (line-number-at-pos beg)) + (end-line (line-number-at-pos end))) + (if (= start-line end-line) + (format "%s:%d" path start-line) + (format "%s:%d-%d" path start-line end-line))) + (format "%s:%d" path (line-number-at-pos))))) + (kill-new ref) + (deactivate-mark) + (message "Copied %s" ref))) + + (alex/keybindings + "y" '(alex/copy-path-with-line :which-key "copy path:line")) +#+END_SRC * Browser #+BEGIN_SRC emacs-lisp