Created
July 10, 2012 09:50
-
-
Save kristianhellquist/3082383 to your computer and use it in GitHub Desktop.
Emacs, copy current file and line number to clipboard
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun copy-current-line-position-to-clipboard () | |
"Copy current line in file to clipboard as '</path/to/file>:<line-number>'" | |
(interactive) | |
(let ((path-with-line-number | |
(concat (buffer-file-name) ":" (number-to-string (line-number-at-pos))))) | |
(x-select-text path-with-line-number) | |
(message (concat path-with-line-number " copied to clipboard")))) | |
(define-key global-map (kbd "M-l") 'copy-current-line-position-to-clipboard) |
git-link will figure out your remote repo on GitHub and copy to your clipboard a link to the line number.
I did another minor change to kill the file path and line number in the same format as expected by Org for an external link. Renamed the function to be able to keep both.
This way, you can paste it into an org buffer and org-open-at-point
on the link will work ...
(defun copy-file-link-to-clipboard ()
"Copy current line in file to clipboard as 'file:</path/to/file>::<line-number>'."
(interactive)
(let ((path-with-line-number
(concat "file:" (buffer-file-name) "::" (number-to-string (line-number-at-pos)))))
(kill-new path-with-line-number)
(message (concat path-with-line-number " copied to clipboard"))))
I add option to replace $HOME
with ~
only if C-u
argument was passed:
(defun copy-current-line-position-to-clipboard ()
"Copy current line in file to clipboard as '</path/to/file>:<line-number>'."
(interactive)
(let* ((path (if (equal current-prefix-arg '(4))
(string-replace (getenv "HOME") "~" (buffer-file-name))
(buffer-file-name)))
(path-with-line-number (concat path ":" (number-to-string (line-number-at-pos)))))
(kill-new path-with-line-number)
(message (concat path-with-line-number " copied to clipboard"))))
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For unit testing in Elixir, we test like this:
MIX_ENV=test mix test path/to/test.exs:110
. Now that I can just grab the file:lineno from where point is in my buffer of test.exs to run specific tests, my dev flow is much more streamline. Thanks...