]> Cypherpunks repositories - gostls13.git/commitdiff
misc/emacs: add support for ff-find-other-file
authorDominik Honnef <dominik.honnef@gmail.com>
Wed, 19 Feb 2014 03:23:55 +0000 (22:23 -0500)
committerAlan Donovan <adonovan@google.com>
Wed, 19 Feb 2014 03:23:55 +0000 (22:23 -0500)
c-mode classically uses ff-find-other-file to toggle between headers
and implementation. For Go it seemingly makes sense to jump between
implementation and test.

While there's no enforced mapping of file names for tests, the mapping
in this CL seems to be very common at least throughout the standard
library, and ff-find-other-file fails gracefully when the mapping
doesn't apply.

LGTM=adonovan
R=adonovan
CC=golang-codereviews
https://golang.org/cl/65750044

misc/emacs/go-mode.el

index b5a2d8f892e315c6bb66ae3e8c21fd9eb15187a3..e19dcdcde8c5b9e3d678f249d8adf7878e939185 100644 (file)
@@ -7,6 +7,7 @@
 (require 'cl)
 (require 'etags)
 (require 'ffap)
+(require 'find-file)
 (require 'ring)
 (require 'url)
 
@@ -168,6 +169,13 @@ from https://github.com/bradfitz/goimports."
   :type 'string
   :group 'go)
 
+(defcustom go-other-file-alist
+  '(("_test\\.go\\'" (".go"))
+    ("\\.go\\'" ("_test.go")))
+  "See the documentation of `ff-other-file-alist' for details."
+  :type '(repeat (list regexp (choice (repeat string) function)))
+  :group 'go)
+
 (defface go-coverage-untracked
   '((t (:foreground "#505050")))
   "Coverage color of untracked code."
@@ -561,6 +569,8 @@ recommended that you look at goflymake
   (set (make-local-variable 'go-dangling-cache) (make-hash-table :test 'eql))
   (add-hook 'before-change-functions (lambda (x y) (setq go-dangling-cache (make-hash-table :test 'eql))) t t)
 
+  ;; ff-find-other-file
+  (setq ff-other-file-alist 'go-other-file-alist)
 
   (setq imenu-generic-expression
         '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1)