1
0
mirror of https://github.com/golang/go synced 2024-11-25 01:37:57 -07:00

misc/emacs: Add godef-jump-other-window

This will behave like similar "*-other-window" functions in Emacs.

Default key bind is C-x 4 C-c C-j – while awkward, it follows both
the convention for other-window functions and the convention for
not using user- or emacs-reserved keys.

R=golang-dev, adonovan
CC=golang-dev
https://golang.org/cl/10707045
This commit is contained in:
Dominik Honnef 2013-07-17 18:16:44 -04:00 committed by Alan Donovan
parent b913cf84dc
commit 58ce655fd2

View File

@ -193,6 +193,7 @@
(define-key m "=" 'go-mode-insert-and-indent)
(define-key m (kbd "C-c C-a") 'go-import-add)
(define-key m (kbd "C-c C-j") 'godef-jump)
(define-key m (kbd "C-x 4 C-c C-j") 'godef-jump-other-window)
(define-key m (kbd "C-c C-d") 'godef-describe)
m)
"Keymap used by Go mode to implement electric keys.")
@ -870,7 +871,7 @@ will be commented, otherwise they will be removed completely."
(message "Removed %d imports" (length lines)))
(if flymake-state (flymake-mode-on)))))
(defun godef--find-file-line-column (specifier)
(defun godef--find-file-line-column (specifier other-window)
"Given a file name in the format of `filename:line:column',
visit FILENAME and go to line LINE and column COLUMN."
(if (not (string-match "\\(.+\\):\\([0-9]+\\):\\([0-9]+\\)" specifier))
@ -878,7 +879,7 @@ visit FILENAME and go to line LINE and column COLUMN."
(let ((filename (match-string 1 specifier))
(line (string-to-number (match-string 2 specifier)))
(column (string-to-number (match-string 3 specifier))))
(with-current-buffer (find-file filename)
(with-current-buffer (funcall (if other-window 'find-file-other-window 'find-file) filename)
(goto-char (point-min))
(forward-line (1- line))
(beginning-of-line)
@ -910,7 +911,7 @@ description at POINT."
(message "%s" description)))
(file-error (message "Could not run godef binary"))))
(defun godef-jump (point)
(defun godef-jump (point &optional other-window)
"Jump to the definition of the expression at POINT."
(interactive "d")
(condition-case nil
@ -924,7 +925,11 @@ description at POINT."
(message "%s" file))
(t
(push-mark)
(godef--find-file-line-column file))))
(godef--find-file-line-column file other-window))))
(file-error (message "Could not run godef binary"))))
(defun godef-jump-other-window (point)
(interactive "d")
(godef-jump point t))
(provide 'go-mode)