]> Cypherpunks repositories - gostls13.git/commitdiff
misc/emacs: Add godef-jump-other-window
authorDominik Honnef <dominik.honnef@gmail.com>
Wed, 17 Jul 2013 22:16:44 +0000 (18:16 -0400)
committerAlan Donovan <adonovan@google.com>
Wed, 17 Jul 2013 22:16:44 +0000 (18:16 -0400)
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

misc/emacs/go-mode.el

index c61c2545e62b48e1efb690eec02aee19f80bf3c3..aac179150bd94a86bc162b65f47f0779b063b3b8 100644 (file)
     (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)