(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.")
(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))
(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)
(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
(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)