diff options
author | Johan Claesson <[email protected]> | 2016-12-30 12:20:01 +0100 |
---|---|---|
committer | Johan Claesson <[email protected]> | 2017-02-08 21:44:16 +0100 |
commit | 1607c07f41a8ff0d87d982fefab6e0c0009d83c3 (patch) | |
tree | b83b854d67bb78ee130736ef458da9a891f22f63 /lib/tools/emacs/erlang-test.el | |
parent | 03c822629b1fafa39d3b83eb1fd04dab8232d9c6 (diff) | |
download | otp-1607c07f41a8ff0d87d982fefab6e0c0009d83c3.tar.gz otp-1607c07f41a8ff0d87d982fefab6e0c0009d83c3.tar.bz2 otp-1607c07f41a8ff0d87d982fefab6e0c0009d83c3.zip |
Emacs: Consider arity when jumping to definitions
Only the xref front-end introduced in Emacs 25 consider arity. It is
not implemented for older emacsen.
Look for manual page files in lib/erlang/man in erlang-root-dir. Also
do not give up in erlang-man-module when not finding the manual page
file. Call manual-entry as a fallback.
Do not bother to populate menu-bar with man pages when menu-bar-mode
is nil.
Add erlang extensions also to dired-omit-extensions.
Remove some support for Emacs 18 and 19.
Diffstat (limited to 'lib/tools/emacs/erlang-test.el')
-rw-r--r-- | lib/tools/emacs/erlang-test.el | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/lib/tools/emacs/erlang-test.el b/lib/tools/emacs/erlang-test.el index ba6190d194..cd02007c73 100644 --- a/lib/tools/emacs/erlang-test.el +++ b/lib/tools/emacs/erlang-test.el @@ -2,7 +2,7 @@ ;;; Unit tests for erlang.el. -;; Author: Johan Claesson +;; Author: Johan Claesson ;; Created: 2016-05-07 ;; Keywords: erlang, languages @@ -59,11 +59,12 @@ concatenated to form an erlang file to test on.") tags-file-name tags-table-list tags-table-set-list + tags-add-tables + tags-completion-table erlang-buffer erlang-mode-hook prog-mode-hook - erlang-shell-mode-hook - tags-add-tables) + erlang-shell-mode-hook) (unwind-protect (progn (setq-default tags-file-name nil) @@ -117,12 +118,20 @@ concatenated to form an erlang file to test on.") for line = 1 then (1+ line) do (when tagname (switch-to-buffer erlang-buffer) - (xref-find-definitions tagname) - (erlang-test-verify-pos erlang-file line) - (xref-find-definitions (concat "erlang_test:" tagname)) - (erlang-test-verify-pos erlang-file line))) - (xref-find-definitions "erlang_test:") - (erlang-test-verify-pos erlang-file 1)) + (erlang-test-xref-jump tagname erlang-file line) + (erlang-test-xref-jump (concat "erlang_test:" tagname) + erlang-file line))) + (erlang-test-xref-jump "erlang_test:" erlang-file 1)) + +(defun erlang-test-xref-jump (id expected-file expected-line) + (goto-char (point-max)) + (insert "\n%% " id) + (save-buffer) + (if (fboundp 'xref-find-definitions) + (xref-find-definitions (erlang-id-to-string + (erlang-get-identifier-at-point))) + (error "xref-find-definitions not defined (too old emacs?)")) + (erlang-test-verify-pos expected-file expected-line)) (defun erlang-test-verify-pos (expected-file expected-line) (should (string-equal (file-truename expected-file) @@ -179,6 +188,30 @@ concatenated to form an erlang file to test on.") erlang)) +(ert-deftest erlang-test-parse-id () + (cl-loop for id-string in '("fun/10" + "qualified-function module:fun/10" + "record reko" + "macro _SYMBOL" + "macro MACRO/10" + "module modula" + "macro" + nil) + for id-list in '((nil nil "fun" 10) + (qualified-function "module" "fun" 10) + (record nil "reko" nil) + (macro nil "_SYMBOL" nil) + (macro nil "MACRO" 10) + (module nil "modula" nil) + (nil nil "macro" nil) + nil) + for id-list2 = (erlang-id-to-list id-string) + do (should (equal id-list id-list2)) + for id-string2 = (erlang-id-to-string id-list) + do (should (equal id-string id-string2)) + collect id-list2)) + + (provide 'erlang-test) ;;; erlang-test.el ends here |