1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 18:40:39 -08:00
Commit graph

206 commits

Author SHA1 Message Date
Paul Eggert
284c470ef7 Backslash cleanup in Elisp source files
This patch should not change behavior.  It typically omits backslashes
where they are redundant (e.g., in the string literal "^\$").
In a few places, insert backslashes where they make regular
expressions clearer: e.g., replace "^\*" (equivalent to "^*") with
"^\\*", which has the same effect as a regular expression.
Also, use ‘\ %’ instead of ‘\%’ when avoiding confusion with SCCS IDs,
and similarly use ‘\ $’ instead of ‘\$’ when avoiding confusion with
RCS IDs, as that makes it clearer that the backslash is intended.
2015-09-17 16:09:39 -07:00
Stephen Leake
711a8eecd5 Fix a bug in elisp--xref-find-definitions related to cl-generic defaults
* lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions): Fix bug
with cl-generic defaults.
(elisp--xref-find-references): Add doc string.

* test/automated/elisp-mode-tests.el (xref-elisp-generic-*): Improve
tests to find bug.
2015-09-15 14:44:46 -05:00
Paul Eggert
cdb0ae37ab Revert some stray curved quotes I missed earlier
Problem reported by David Kastrup in:
http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00440.html
* lisp/international/mule-cmds.el (leim-list-header):
Use format-message with an ASCII-only format.
2015-09-10 10:12:37 -07:00
Stefan Monnier
ab21f61a55 Make syntax.c call syntax-propertize on demand
* lisp/emacs-lisp/syntax.el (syntax--jit-propertize): New function.
(parse-sexp-propertize-function): Use it.
(syntax-propertize): Disable parse-sexp-propertize-function.

* src/syntax.c (parse_sexp_propertize, update_syntax_table_forward):
New functions.
(syms_of_syntax): New vars `parse-sexp-propertize-done' and
`parse-sexp-propertize-function'.

* src/syntax.h (struct gl_state_s): Add `e_property_truncated' field.
(UPDATE_SYNTAX_TABLE_FORWARD): Use update_syntax_table_forward.
(SETUP_BUFFER_SYNTAX_TABLE): Set e_property_truncated.

* lisp/progmodes/elisp-mode.el (elisp-byte-code-syntax-propertize):
Don't assume `point' is set.
2015-09-09 15:14:52 -04:00
Paul Eggert
26bd978d87 Fix some more docstring etc. quoting problems
Mostly these fixes prevent the transliteration of apostrophes
that should stay apostrophes.  Also, prefer curved quotes in
Bahá’í proper names, as that’s the preferred Bahá’í style and
these names are chock-full of non-ASCII characters anyway.
* lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload)
(eieio-defclass-internal):
* lisp/emacs-lisp/eieio.el (defclass):
* lisp/hi-lock.el (hi-lock-mode):
Don’t transliterate Lisp apostrophes when generating a
doc string or diagnostic.
* lisp/international/mule-diag.el (list-coding-systems-1):
* lisp/international/ogonek.el (ogonek-jak, ogonek-how):
* lisp/mail/sendmail.el (sendmail-query-user-about-smtp):
* lisp/vc/ediff-mult.el (ediff-redraw-registry-buffer):
* lisp/vc/ediff-ptch.el (ediff-fixup-patch-map):
Substitute quotes before putting them in the help buffer.
2015-09-03 15:32:54 -07:00
Stephen Leake
a9713f202e Improve comments in elisp-mode.el, elisp-mode-tests.el
* lisp/progmodes/elisp-mode.el: Clean up FIXMEs, comments.
2015-09-01 05:15:30 -05:00
Stephen Leake
64fbdc9825 Add mode local overrides to xref-find-definitions
* lisp/cedet/mode-local.el (xref-mode-local--override-present,
xref-mode-local-overload): New; add mode local overrides to
xref-find-definitions.

* test/automated/elisp-mode-tests.el: Add mode local override tests.
(xref-elisp-test-run): Handle indented defuns.
(xref-elisp-generic-*): Improve doc strings.

* lisp/progmodes/elisp-mode.el (elisp-xref-find-def-functions): New.
(elisp--xref-find-definitions): Use it.
2015-08-26 16:58:57 -05:00
Paul Eggert
760701ebe1 Don't quote symbols 'like-this' in docstrings etc.
* admin/unidata/uvs.el (uvs-insert-fields-as-bytes):
* lisp/allout-widgets.el (allout-widgets-count-buttons-in-region):
* lisp/allout.el (allout-add-resumptions, allout-mode):
* lisp/calculator.el (calculator-operators):
* lisp/cedet/data-debug.el (dd-propertize):
* lisp/cedet/ede/proj-prog.el (ede-proj-target-makefile-program):
* lisp/cedet/semantic/analyze/debug.el:
(semantic-analyzer-debug-global-miss-text):
* lisp/cedet/semantic/lex-spp.el:
(semantic-lex-spp-replace-or-symbol-or-keyword):
* lisp/cedet/semantic/symref.el:
(semantic-symref-cleanup-recent-buffers-fcn):
* lisp/cedet/semantic/tag.el (semantic-tag-class):
* lisp/cedet/srecode/el.el (srecode-semantic-handle-:el-custom):
* lisp/gnus/nnmairix.el (nnmairix-propagate-marks-upon-close):
* lisp/gnus/pop3.el (pop3-authentication-scheme):
* lisp/help-fns.el (describe-function-orig-buffer):
* lisp/imenu.el (imenu--history-list):
* lisp/mail/feedmail.el (feedmail-confirm-outgoing)
(feedmail-display-full-frame, feedmail-deduce-bcc-where)
(feedmail-queue-default-file-slug)
(feedmail-queue-buffer-file-name):
* lisp/net/mairix.el (mairix-searches-mode-map):
* lisp/net/newst-backend.el (newsticker-retrieval-method)
(newsticker-auto-mark-filter-list):
* lisp/obsolete/vi.el (vi-mode):
* lisp/progmodes/cc-engine.el (c-literal-type):
* lisp/progmodes/cpp.el (cpp-face):
* lisp/progmodes/ebrowse.el (ebrowse-electric-list-looper):
* lisp/progmodes/elisp-mode.el (elisp--xref-make-xref):
* lisp/progmodes/pascal.el (pascal-auto-lineup):
* lisp/progmodes/prog-mode.el (prog-widen):
* lisp/progmodes/verilog-mode.el (verilog-regexp-words)
(verilog-auto-lineup, verilog-auto-reset-widths)
(verilog-auto-arg-format, verilog-auto-inst-template-numbers):
* lisp/textmodes/flyspell.el (flyspell-maybe-correct-transposition)
(flyspell-maybe-correct-doubling):
* lisp/textmodes/table.el (table-justify, table-justify-cell)
(table-justify-row, table-justify-column, table-insert-sequence)
(table--justify-cell-contents):
* lisp/url/url-auth.el (url-get-authentication):
* lisp/window.el (display-buffer-record-window):
* lisp/xml.el (xml-parse-file, xml-parse-region):
* src/gfilenotify.c (Fgfile_add_watch):
Don't quote symbols with apostrophes in doc strings.
Use asymmetric quotes instead.
* lisp/cedet/semantic/complete.el (semantic-displayor-show-request):
Likewise for symbol in diagnostic.
* lisp/image.el (image-extension-data):
* lisp/register.el (frame-configuration-to-register):
* src/buffer.c (syms_of_buffer):
Remove bogus apostrophes after symbols.
* lisp/thumbs.el (thumbs-conversion-program):
Quote Lisp string values using double-quotes, not apostrophes.
2015-08-20 17:34:57 -07:00
Paul Eggert
abd838ef8b Spelling fixes 2015-08-16 23:53:04 -07:00
Eli Zaretskii
9d053b34cb Don't miss warnings about removing string text properties while dumping
* src/alloc.c (purecopy): Warn about removing a string's text
properties even when the same string was already pure-copied
earlier.

* lisp/progmodes/elisp-mode.el (elisp--xref-format)
(elisp--xref-format-extra): Fix the commentary.
2015-08-14 13:34:18 +03:00
Stephen Leake
0382fd42c6 xref-find-definitions: Exclude more generic function items.
* lisp/emacs-lisp/cl-generic.el (cl--generic-search-method): Add doc string.
(cl--generic-find-defgeneric-regexp): New.
(find-function-regexp-alist): Add it.

* lisp/emacs-lisp/find-func.el (find-feature-regexp): Move here from
elisp-mode.el, change to search for ";;; Code:"
(find-alias-regexp): Move here from elisp-mode.el, cleaned up.
(find-function-regexp-alist): Add them.

* lisp/progmodes/elisp-mode.el:
(elisp--xref-format, elisp--xref-format-extra): Change back to defvar due
to bug#21237.
(elisp--xref-find-definitions): Exclude co-located default methods for
generic functions. Also exclude implicitly declared defgeneric.
(elisp--xref-find-definitions): Handle C source properly. Exclude minor
mode variables defined by 'define-minor-mode'.

* test/automated/elisp-mode-tests.el: Declare generic functions, add
tests for them.
(xref-elisp-test-run): Fix bug.
(emacs-test-dir): Improve initial value.
(find-defs-defun-defvar-el): Don't expect defvar.
(find-defs-feature-el): Match change to find-feature-regexp.
2015-08-13 13:16:47 -05:00
Stephen Leake
85f7e5115f elisp--xref-find-definitions handle cl-defstuct default constructor
* lisp/progmodes/elisp-mode.el (elisp-xref-find): Add FIXME.
(elisp--xref-format-extra): Rename from elisp--xref-format-cl-defmethod.
(elisp--xref-find-definitions): Handle cl-defstuct default constructor.

* test/automated/elisp-mode-tests.el (xref-elisp-test-run): Split out
from xref-elisp-test for ease of debugging.
(xref-elisp-deftest): Rename from xref-elisp-test.
(find-defs-constructor): New test.
(find-defs-defgeneric-el): Match batch test config.
(compile): Required for find-defs compilation-minor-mode test.
(find-defs-defvar-el): Match code change.
(find-defs-face-el): Match code change.

* lisp/progmodes/xref.el (xref-find-function, xref-find-definitions):
Improve doc string.
2015-08-11 14:29:34 -05:00
Stephen Leake
d7df36e745 Rewrite elisp--xref-find-definitions to handle many more cases; add tests.
* lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location): deleted
(elisp--xref-format-cl-defmethod): new
(find-feature-regexp): new
(find-alias-regexp): new
(elisp--xref-make-xref): new
(elisp--xref-find-definitions): Rewrite using the above, handle many more
cases. Always output all available definitions.
(xref-location-marker): No need for special cases.

* test/automated/elisp-mode-tests.el: Add more tests of
elisp--xref-find-definitions, improve current tests.
2015-08-10 21:55:37 -05:00
Dmitry Gutov
543bb9bc20 Add a second argument to project-ignores
* lisp/progmodes/project.el (project-ignores): Add a second
argument DIR.

* lisp/progmodes/project.el (project-ignores): Only include the VC
ignores if DIR is the VC root.

* lisp/progmodes/xref.el (xref-find-regexp): Update accordingly.
2015-08-02 01:30:36 +03:00
Dmitry Gutov
6a79a169e7 Rename project-directories to project-roots
* lisp/progmodes/project.el (project-search-path-function)
(project-search-path): Update the docstring.
(project-directories): Rename to `project-roots', update all
callers and implementations accordingly.
(project-root): Remove.

* lisp/progmodes/xref.el (xref-find-regexp): Use * instead of *.*
as the default file mask.
2015-07-31 05:53:14 +03:00
Dmitry Gutov
e29206e84a Rename xref description slot to summary
* lisp/progmodes/xref.el (xref--xref): Rename the `description'
slot to `summary'.
2015-07-20 03:12:32 +03:00
Dmitry Gutov
62d5d46551 Add `project-ignores'
* lisp/progmodes/project.el (project-ignores): New generic
function, and an implementation for the	VC project type.

* lisp/progmodes/xref.el (xref--rgrep-command): Split, as a
variant of rgrep-default-command that handles a generic list of
ignores.
(xref-collect-matches): Use it, and pass through to it the value
of the newly added argument.
(xref-find-regexp): Handle ignored paths within the project.
Remove outdated comment.

* lisp/vc/vc.el (vc-default-ignore-completion-table):
Skip the comments and the empty lines.
2015-07-12 17:19:08 +03:00
Dmitry Gutov
f8c720b55b Introduce a Project API
* lisp/progmodes/project.el: New file.

* lisp/cedet/ede.el: (project-try-ede): New function.
(project-root): New implementation.

* lisp/progmodes/elisp-mode.el (emacs-lisp-mode):
Set project-search-path-function.
(elisp--xref-find-references): Delegate some logic to
project-search-path.
(elisp-search-path): New function.
(elisp-xref-find): Don't implement `matches' anymore.

* lisp/progmodes/etags.el: Don't implement `matches'.
Delegate some logic to project-search-path.
(etags-search-path): New function.

* lisp/progmodes/xref.el (xref-find-function):
Remove `matches' from the API.
(xref-find-regexp): Move whatever common logic was in elisp and
etags implementations, and search the directories returned by
project-directories and project-search-path.
2015-07-10 04:40:09 +03:00
Stephen Leake
4b1613762f Add missing function xref-location-group for elisp-mode.
* lisp/progmodes/elisp-mode.el: Add missing function xref-location-group.
2015-06-17 09:35:00 -05:00
Glenn Morris
fb77502f69 Address some check-declare warnings.
* lisp/simple.el (tabulated-list-print):
* lisp/progmodes/elisp-mode.el (xref-collect-matches):
* lisp/term/ns-win.el (ns-selection-owner-p, ns-selection-exists-p)
(ns-get-selection): Update declarations.
2015-06-16 20:33:48 -04:00
Paul Eggert
b220562637 Fix quoting of help for functions with odd names
While investigating Bug#20759, I discovered other quoting problems:
C-h f mishandled characters like backslash and quote in function names.
This fix changes the behavior so that 'C-h f pcase RET' now
generates "... (\` QPAT) ..." instead of "... (` QPAT) ...",
because '(format "%S" '(` FOO))' returns "(\\` FOO)".  A comment
in src/lread.c's read1 function says that the backslash will be
needed starting in Emacs 25, which implies that 'format' is
correct and the old pcase documention was wrong to omit the backslash.
* lisp/emacs-lisp/nadvice.el (advice--make-docstring):
* lisp/help-fns.el (help-fns--signature):
* lisp/help.el (help-add-fundoc-usage):
* lisp/progmodes/elisp-mode.el (elisp-function-argstring):
Use help--make-usage-docstring rather than formatting
help-make-usage.
* lisp/emacs-lisp/pcase.el (pcase--make-docstring):
Return raw docstring.
* lisp/help-fns.el (help-fns--signature): New arg RAW, to return
raw docstring.  Take more care to distinguish raw from cooked dstrings.
(describe-function-1): Let help-fns--signature substitute
command keys.
* lisp/help.el (help--docstring-quote): New function.
(help-split-fundoc): Use it, to quote funny characters more
systematically.
(help--make-usage): Rename from help-make-usage, since this
should be private.  Leave an obsolete alias for the old name.
(help--make-usage-docstring): New function.
* test/automated/help-fns.el (help-fns-test-funny-names): New test.
2015-06-11 10:24:38 -07:00
Stefan Monnier
26a17f5ac9 * lisp/progmodes/elisp-mode.el: Require cl-lib for cl-defstruct. 2015-06-09 21:21:29 -04:00
Dmitry Gutov
68273707ec Skip past `#' to find BEG
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point): Skip
past `#' to find BEG (bug#20771).

* test/automated/elisp-mode-tests.el
(elisp-completes-functions-after-hash-quote): New test.
2015-06-09 01:08:28 +03:00
Glenn Morris
809885c217 Address some compilation warnings.
* lisp/international/mule-cmds.el (w32-get-console-codepage)
(w32-get-console-output-codepage):
* lisp/progmodes/elisp-mode.el (xref-collect-references):
* lisp/version.el (cairo-version-string): Declare.

* lisp/erc/erc.el (erc-nickname-in-use): Fix typo.
2015-06-06 12:12:06 -07:00
Dmitry Gutov
7f01832e13 Reuse rgrep mechanics in xref-find-regexp
* lisp/progmodes/grep.el (rgrep-default-command):
Extract from `rgrep'.

* lisp/progmodes/xref.el (xref-collect-references): Split from
`xref-collect-matches'.  Only handle the case of symbol search.
(xref-collect-matches): Instead of Semantic Symref, use
`rgrep-default-command', to take advantage of its directory and
file ignore settings.
(xref--collect-match): Remove the last argument, leaving the
regexp construction up to the caller.

* lisp/progmodes/elisp-mode.el (elisp--xref-find-matches):
Change to take the xref-collect- function to use as an argument.
(elisp-xref-find): Update accordingly.

* lisp/progmodes/etags.el (etags--xref-find-matches)
(etags-xref-find): Same.
2015-06-02 18:47:43 +03:00
Dmitry Gutov
64f2d346b7 Move xref-elisp-location to elisp-mode.el
* lisp/progmodes/xref.el (xref-elisp-location)
(xref-make-elisp-location, xref-location-marker): Remove here.
(xref--xref): Don't limit the type of the location slot.

* lisp/progmodes/elisp-mode.el (xref-elisp-location):
Define as a cl-struct here.
(xref-location-marker): Move here.
2015-06-02 18:47:42 +03:00
Paul Eggert
73512b8cff New minor mode Electric Quote
This lets you easily insert quotes ‘like this’ by typing
quotes `like this', and similarly you can easily insert
quotes “like this” by typing quotes ``like this'' (Bug#20545).
* doc/emacs/basic.texi (Inserting Text):
* doc/emacs/modes.texi (Minor Modes):
* etc/NEWS: Document it.
* doc/emacs/text.texi (Quotation Marks): New section.
* lisp/electric.el (electric-quote-comment)
(electric-quote-string, electric-quote-paragraph):
New custom vars.
(electric--insertable-p)
(electric-quote-post-self-insert-function): New functions.
(electric-quote-mode, electric-quote-local-mode): New minor modes.
* lisp/progmodes/elisp-mode.el (emacs-lisp-mode):
Add curved single quotes to electric-pair-text-pairs.
Set electric-quote-string in this buffer.
2015-05-28 00:54:06 -07:00
Paul Eggert
0fd5e6593a Support curved quotes in doc strings
Emacs's traditional doc string style has been to quote symbols
`like this'.  This worked well on now-obsolete terminals where
` and ' were symmetric quotes, but nowadays curved quotes
‘like this’ look better.  Support quoting the new way too.
(Bug#20385)
* doc/lispref/tips.texi (Documentation Tips): Symbols can be quoted
‘like-this’ as well as `like-this'.
* etc/NEWS: Mention this.
* lisp/cedet/mode-local.el (overload-docstring-extension)
(mode-local-print-binding, mode-local-describe-bindings-2):
* lisp/cus-theme.el (describe-theme-1):
* lisp/descr-text.el (describe-text-properties-1, describe-char):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class)
(eieio-help-constructor):
* lisp/emacs-lisp/package.el (describe-package-1):
* lisp/faces.el (describe-face):
* lisp/help-fns.el (help-fns--key-bindings)
(help-fns--compiler-macro, help-fns--parent-mode, help-fns--obsolete):
(help-fns--interactive-only, describe-function-1):
(describe-variable):
* lisp/help.el (describe-mode):
* lisp/international/mule-cmds.el (describe-input-method)
(describe-language-environment):
* lisp/international/mule-diag.el (describe-character-set)
(print-coding-system-briefly, list-input-methods)
(list-input-methods-1):
Insert curved quotes rather than grave accent and apostrophe.
* lisp/cedet/srecode/texi.el (srecode-texi-texify-docstring):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine)
(checkdoc-proper-noun-region-engine):
* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2)
(lisp-cl-font-lock-keywords-2):
* lisp/finder.el (finder-font-lock-keywords):
* lisp/gnus/gnus-art.el (gnus-button-alist):
* lisp/help-fns.el (help-do-arg-highlight)
(describe-function-1, describe-variable):
* lisp/help-mode.el (help-xref-symbol-regexp)
(help-xref-info-regexp, help-xref-url-regexp):
* lisp/help.el (describe-mode):
* lisp/international/mule-cmds.el (help-xref-mule-regexp-template):
* lisp/wid-edit.el (widget-documentation-link-regexp):
Parse symbols quoted ‘like-this’ as well as `like-this'.
* lisp/progmodes/elisp-mode.el (emacs-lisp-mode):
Add "‘" and "’" to electric-pair-text-pairs.
(elisp--form-quoted-p): Also allow "‘" as a quoting char.
(elisp-completion-at-point, elisp--preceding-sexp):
Also treat "‘" and "’" as quoting chars.
2015-05-28 00:22:02 -07:00
Dmitry Gutov
089632800a Add xref-find-regexp
* lisp/progmodes/xref.el (xref-find-function): Describe the
`matches' action.
(xref-find-regexp): New command, using it.
(xref-collect-references): Rename to xref-collect-matches.
(xref--collect-reference): Rename to xref--collect-match.
(xref-collect-matches, xref--collect-match): Accept new argument,
KIND.  Update accordingly.
(xref--regexp-to-extended): New function.

* lisp/progmodes/elisp-mode.el (elisp-xref-find): Support the
`matches' action.
(elisp--xref-find-matches): Accept new argument.  Resolve a FIXME.

* lisp/progmodes/etags.el (etags-xref-find):
Support the `matches' action.
(etags--xref-find-matches): New function.
2015-05-11 02:07:27 +03:00
Stefan Monnier
a7d630eb48 * lisp/cedet/semantic/grammar.el: Fix compiler warnings (bug#20505)
(semantic-grammar--template-expand): New function.
(semantic-grammar-header, semantic-grammar-footer): Use it.
(semantic-grammar--lex-block-specs): Remove unused var `block-spec'.
(semantic-grammar-file-regexp): Refine regexp.
(semantic-grammar-eldoc-get-macro-docstring):
Use elisp-get-fnsym-args-string when available.
(semantic-idle-summary-current-symbol-info): Use new elisp-* names
instead of the old eldoc-* names.

* lisp/emacs-lisp/eldoc.el (eldoc-docstring-format-sym-doc): Move back
from elisp-mode.el.  Tweak calling convention.

* lisp/progmodes/elisp-mode.el (package-user-dir): Declare.
(elisp-get-fnsym-args-string): Add `prefix' argument.  Rename from
elisp--get-fnsym-args-string.
(elisp--highlight-function-argument): Add `prefix' arg.
(elisp-get-var-docstring): Rename from elisp--get-var-docstring.
(elisp--docstring-format-sym-doc): Move back to eldoc.el.
2015-05-05 22:18:19 -04:00
Dmitry Gutov
755045e1eb Work around "Attempt to modify read-only object"
* lisp/progmodes/elisp-mode.el (elisp--xref-format): Extract from
elisp--xref-find-definitions, to work around "Attempt to modify
read-only object" error.
2015-05-05 15:28:41 +03:00
Dmitry Gutov
fbe7fb0547 Only skip some variables that have function counterparts
* lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location):
Only skip minor-mode-named variable if it's defined in a Lisp
file, and it's in minor-mode-list (bug#20506).

* test/automated/elisp-mode-tests.el
(elisp-xref-finds-both-function-and-variable)
(elisp-xref-finds-only-function-for-minor-mode): New tests.
2015-05-05 15:11:14 +03:00
Dmitry Gutov
46c94cd599 Make sure we're inside the let bindings
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
Make sure we're inside the let bindings.

* test/automated/elisp-mode-tests.el
(elisp-completes-functions-after-let-bindings): New test.
2015-05-05 05:14:01 +03:00
Glenn Morris
4003ebce4a * lisp/progmodes/elisp-mode.el (xref-collect-references): Declare. 2015-05-04 20:22:52 -04:00
Dmitry Gutov
f773a4dd21 Highlight both type and symbol name
* lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions):
Highlight both type and symbol name.
2015-05-05 02:59:34 +03:00
Dmitry Gutov
fe4e258b17 Classify lone symbol inside let varlist as variable
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
Classify lone symbol inside let varlist as variable.

* test/automated/elisp-mode-tests.el (completest-variables-in-let-bindings):
New test.
2015-05-04 18:51:48 +03:00
Dmitry Gutov
ac5586a103 elisp-completion-at-point: Prioritize being quoted over funpos
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
Only consider function position when not inside quoted form
(bug#20425).

* test/automated/elisp-mode-tests.el: New file.
2015-05-03 23:57:38 +03:00
Dmitry Gutov
3bfb6a0f12 Fix etags-xref-find for references
* lisp/progmodes/elisp-mode.el (elisp--xref-find-references): Use `cl-mapcan'.

* lisp/progmodes/etags.el (etags-xref-find): Ditto.  Prompt for
directory if no tags tables are loaded (bug#19468).
2015-05-02 13:11:21 +03:00
Dmitry Gutov
fed6a0d6b1 Implement xref-find-references in etags and elisp-mode
* lisp/progmodes/elisp-mode.el (elisp--xref-find-references): New function.
(elisp-xref-find): Use it.

* lisp/progmodes/etags.el (etags-xref-find): Use `xref-collect-references'.

* lisp/progmodes/xref.el (xref-collect-references):
(xref--collect-reference): New functions.
2015-05-01 23:41:27 +03:00
Stefan Monnier
d32d0fae2a * elisp-mode.el: Catch errors from `documentation'
Fixes: debbugs:20418

* lisp/progmodes/elisp-mode.el (elisp--get-fnsym-args-string):
Catch errors from documentation.
(emacs-lisp-mode-abbrev-table): Remove redundant defvar.
2015-04-27 00:01:36 -04:00
Dmitry Gutov
3ec1047b57 Don't show both feature and function with the same name
* lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location):
Don't show both feature and function with the same name.
2015-04-18 02:35:59 +03:00
Dmitry Gutov
35be45bbc9 (elisp--xref-identifier-location): Skip variable, if it's also a functiong
* lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location):
Avoid returning both the variable and the function for the same
minor mode.
2015-04-18 01:47:31 +03:00
Stefan Monnier
c0c57f8b36 Move some Elisp-specific code from lisp-mode.el to elisp-mode.el
* lisp/emacs-lisp/lisp-mode.el (lisp--el-font-lock-flush-elisp-buffers):
Move to elisp-mode.el.
(lisp-mode-variables): (Re)move elisp-specific settings.

* lisp/progmodes/elisp-mode.el (emacs-lisp-mode): Add settings removed
from lisp-mode-variables.
(elisp--font-lock-flush-elisp-buffers): New function, moved from
lisp-mode.el.
2015-04-15 16:50:17 -04:00
Nicolas Richard
ca5790eb50 lisp/progmodes/elisp-mode.el (elisp--eval-last-sexp): Document argument.
Fixes: 19932
2015-02-25 16:17:54 +01:00
Michal Nazarewicz
fd020a2931 eldoc: modify eldoc-documentation-function' using add-function'
* lisp/emacs-lisp/eldoc.el (eldoc-documentation-function): Describe how
major modes should use `add-function' to alter value of the variable.

* lisp/hexl.el (hexl-mode): Set `eldoc-documentation-function' using
`add-function' so the default value is always used.
* lisp/ielm.el (inferior-emacs-lisp-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/progmodes/cfengine.el (cfengine3-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/progmodes/elisp-mode (emacs-lisp-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/progmodes/octave.el (octave-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/progmodes/python.el (python-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/simple.el (read--expression): Set `eldoc-documentation-function'
using `add-function' so the default value is always used.
2015-01-20 15:04:15 +01:00
Paul Eggert
7e09ef09a4 Update copyright year to 2015
Run admin/update-copyright.
2015-01-01 14:26:41 -08:00
Dmitry Gutov
381c0bfaf2 Unbreak jumping to an alias's definition
* lisp/emacs-lisp/find-func.el (find-function-library): Return a pair
(ORIG-FUNCTION . LIBRARY) instead of just its second element.
(find-function-noselect): Use it.

* lisp/progmodes/elisp-mode.el (elisp--xref-identifier-file): Rename to
`elisp--xref-identifier-location', incorporate logic from
`elisp--xref-find-definitions', use the changed
`find-function-library' return value.
2014-12-29 04:21:51 +02:00
Dmitry Gutov
968d096203 (elisp--xref-identifier-file): Skip features that have no sources
* lisp/progmodes/elisp-mode.el (elisp--xref-identifier-file):
Skip features that have no sources.
2014-12-28 01:54:43 +02:00
Dmitry Gutov
6d14e0d361 elisp-xref-find: Don't create buffers eagerly
* lisp/emacs-lisp/find-func.el (find-function-library): New function,
extracted from `find-function-noselect'.

* lisp/progmodes/elisp-mode.el (elisp--identifier-location): Fold back
into `elisp--company-location'.
(elisp--identifier-completion-table): Rename to
`elisp--identifier-completion-table', and do not include just any
symbols with a property list.
(elisp-completion-at-point): Revert the 2014-12-25 change.
(elisp--xref-identifier-file): New function.
(elisp--xref-find-definitions): Use it.

* lisp/progmodes/xref.el (xref-elisp-location): New class.
(xref-make-elisp-location): New function.
(xref-location-marker): New implementation.
2014-12-27 16:07:31 +02:00
Dmitry Gutov
807c3413c4 Add basic xref apropos implementation to elisp-mode
* lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions):
Filter out nil results.
(elisp--xref-find-apropos): New function.
(elisp-xref-find): Use it.

* lisp/progmodes/xref.el (xref--show-xrefs): Use `user-error'.
2014-12-26 18:34:47 +02:00