mirror of
https://github.com/golang/go
synced 2024-11-12 08:20:22 -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:
parent
b913cf84dc
commit
58ce655fd2
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user