1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-23 07:12:12 -07:00
Commit graph

8705 commits

Author SHA1 Message Date
Daniel Mendler
443d9efc95 (completing-read): Add group-function to the completion metadata
A completion table can specify a `group-function` in its metadata.
The group function takes two arguments, a completion candidate and a
transform argument.  The group function is used to group the
candidates after sorting and to enhance the completion UI with group
titles.

If the transform argument is nil, the function must return the title
of the group to which the completion candidate belongs.  The function
may also return nil if the candidate does not belong to a group.

If the transform argument is non-nil, the function must return the
transformed candidate.  For example, the transformation allows to
remove a redundant part of the candidate, which is then displayed in
the title.

The grouping functionality is guarded by the customizable variable
`completions-group` and turned off by default for the *Completions*
buffer.

The specific form of the `group-function` has been chosen in order to
allow allocation-free grouping.  This is important for completion UIs,
which continously update the displayed set of candidates (Icomplete,
Vertico, Ivy, etc.).  Only when the transform argument is non-nil the
candidate transformation is performed, which may involve a string
allocation as done in the function `xref--completing-read-group`.

The function `xref-show-definitions-completing-read` makes use of the
`group-function`, by moving the file name prefix to the title.  If
grouping is enabled, the *Completions* are displayed as
"linenum:summary" instead of "file:linenum:summary".  This way the
*Completions* buffer resembles the *Occur* buffer.

* doc/lispref/minibuf.texi: Add documentation.

* lisp/minibuffer.el (completion-metadata): Describe the
`group-function` in the docstring.
(completions-group): Add guard variable, off by default.
(completions-group-format): Add variable defining the format string
for the group titles.
(completions-group-title): Add face used by `completions-group-format`
for the group titles.
(completions-group-separator): Add face used by
`completions-group-format` for the group separator lines.
(minibuffer--group-by): New grouping function.
(minibuffer-completion-help): Use it.
(display-completion-list): Add optional GROUP-FUN argument.
(completion--insert-strings): Add optional GROUP-FUN argument.  Insert
group titles if `completions-format` is `one-column`.  Transform each
candidate with the GROUP-FUN.  Attach the untransformed candidate to
the property `completion--string`.

* lisp/simple.el (choose-completion): Retrieve the untransformed
completion candidate from the property `completion--string`.

* lisp/progmodes/xref.el:
(xref--completing-read-group): New grouping function.
(xref-show-definitions-completing-read): Use it.
2021-05-20 20:50:23 +03:00
Ingo Lohmar
dac694b8bb * lisp/progmodes/sql.el: `sql-postgres-statement-starters' defcustom
Recognize common table expression as statement start in Postgres.
2021-05-19 15:07:52 +02:00
Stefan Monnier
1276ba75eb * lisp/progmodes/js.el (js--make-framework-matcher): Use a closure 2021-05-18 20:30:08 -04:00
Stefan Monnier
942cbc4dea * lisp/progmodes/gud.el (gud-tooltip-tips): Use proper closures
Also prefer #' to quote function names.

(jdb): Fix $ => \'.
2021-05-18 20:21:51 -04:00
Dmitry Gutov
d83db639d3 Visually truncate excessively long lines in Xref
* lisp/progmodes/xref.el (xref-truncation-width): New option.
(xref--apply-truncation): New function.
(xref--insert-xrefs): Use it (bug#46859).
2021-05-18 03:36:40 +03:00
Ingo Lohmar
5a82d4ce5a prepend newline in sqli buffer
(sql-remove-continuation-prompt, sql-send-string): Move newline
insertion.

Previously, the preoutput filter `sql-remove-continuation-prompt'
inserted a leading newline in the interactive SQL buffer if it decided
that is has to remove continuation prompts and that it had found all
it was looking for.

1) This filter function was a doubtful place to do that (arguably, its
   name does not suggest any action like this).
2) The behavior worked inconsistently, eg, when sending a single-line
   "SELECT" statement, because it only ran when the filter function
   needed to remove any prompts (for example, not when sending a
   region without newlines).

   This can lead to misaligned table headers, which explains why
   emacswiki and stackoverflow both present several fixes to this
   behavior.
2021-05-16 16:32:10 +02:00
Tassilo Horn
b6d02dc376 Add bug-reference-mode-force-auto-setup
* lisp/progmodes/bug-reference.el
(bug-reference-try-setup-from-rmail): Match the Rmail mbox filename
against GROUP-REGEXP in bug-reference-setup-from-mail-alist.
(bug-reference-mode-force-auto-setup): New function which forces
auto-setup even if bug-reference-bug-regexp and
bug-reference-url-format are already set.
2021-05-16 16:19:57 +02:00
Tassilo Horn
1b8f013d17 Bug reference auto-setup for Rmail
* lisp/progmodes/bug-reference.el
(bug-reference-try-setup-from-rmail): New function setting up
`bug-reference-mode' from the current Rmail message.
2021-05-16 09:21:48 +02:00
Tassilo Horn
de61b0b25f Refactor bug-reference setup functions into a defvar
* lisp/progmodes/bug-reference.el
(bug-reference-auto-setup-functions): New defvar so that other
packages can add their own auto-setup functions to it.
* lisp/progmodes/bug-reference.el (bug-reference--run-auto-setup): Use
the new variable instead of hard-coding the 4 functions we've had
already.
2021-05-15 21:19:55 +02:00
Dmitry Gutov
efea3a02f5 Add :company-kind support to sh-mode completion
* lisp/progmodes/sh-script.el (sh--completion-keywords):
New variable.
(sh--cmd-completion-table): Extracted from here.
(sh-completion-at-point-function): Add :company-kind.
2021-05-15 03:44:16 +03:00
Lars Ingebrigtsen
1b0dc15a0a Tweak indentation of #foo in js-mode
* lisp/progmodes/js.el (js--proper-indentation): Indent #define
(etc) to column 0, but otherwise indent #foo normally (bug#47488).
2021-05-12 16:17:55 +02:00
Jim Porter
d2034296a9 Abbreviate rgrep command on MS Windows (bug#48302)
* lisp/progmodes/grep.el (grep-mode-font-lock-keywords):
Adapt regexp to match MS Windows-style shell-quoting.

* test/lisp/progmodes/grep-tests.el: New file.
2021-05-12 10:47:07 +02:00
Stefan Monnier
fa9f61e0f6 * lisp/font-lock.el: Fix font-lock-comment-end-skip fallback (bug#34088)
(font-lock-fontify-syntactically-region): Use `comment-end-skip` as
fallback for `font-lock-comment-end-skip`, as is done for
`font-lock-comment-start-skip` (and as the name suggests).

* lisp/progmodes/opascal.el (opascal-mode): Revert last change,
made unnecessary.
2021-05-11 13:19:50 -04:00
Andrea Corallo
63df3372be Rename comp-deferred-compilation
* lisp/progmodes/elisp-mode.el
	(emacs-lisp-native-compile-and-load): Rename
	comp-deferred-compilation -> native-comp-deferred-compilation.
	* src/comp.c (maybe_defer_native_compilation, syms_of_comp):
	Likewise.
2021-05-11 18:31:45 +02:00
Lars Ingebrigtsen
17a950cc80 Fix comment end delimiter fontification in OPascal mode
* lisp/progmodes/opascal.el (opascal-mode): Fontify the ending
brace with `font-lock-comment-delimiter-face' correctly (bug#34088).
2021-05-11 15:52:33 +02:00
Lars Ingebrigtsen
6b7e93e444 Fix indentation of lines starting with # in js-mode
* lisp/progmodes/js.el (js--proper-indentation): # is not like in
C -- it doesn't have to appear on the beginning of the line
(bug#47488).
2021-05-09 11:44:33 +02:00
Jim Porter
704755a568 Shell-quote the directory when finding a project's files
* lisp/progmodes/project.el (project--files-in-directory):
Shell-quote the directory (bug48247).
2021-05-06 20:44:50 +03:00
Dmitry Gutov
8616e4f747 project--buffer-list: Tighten the check
* lisp/progmodes/project.el (project--buffer-list): Tighten the
check to speed up in the presence of multiple Tramp sessions, too.
(https://lists.gnu.org/archive/html/emacs-devel/2021-05/msg00152.html)
2021-05-06 20:43:02 +03:00
Harald Jörg
9e0fc5321b cperl-mode: Eliminate bad interpretation of ?foo?
* lisp/progmodes/cperl-mode.el (cperl-find-pods-heres): Delete
?? from the allowed bare regexp delimiters.
(cperl-short-docs): Delete ?...? from the documentation.

* test/lisp/progmodes/cperl-mode-tests.el (cperl-bug-47598):
Add tests for good, bad, and ambiguous use of ? as regex
delimiter (bug#47598).
2021-05-06 12:33:40 +02:00
Matt Beshara
14c9245e82 Remove unnecessary call to message in js.el
* lisp/progmodes/js.el (js--end-of-defun-nested): Remove debugging
message left over (bug#48234).
2021-05-05 14:49:33 +02:00
Basil L. Contovounesios
3783e7fb4d Remove unused lexical variables in cc-defs.el
* lisp/progmodes/cc-defs.el (c-sc-scan-lists-no-category+1+1)
(c-sc-scan-lists-no-category+1-1, c-sc-scan-lists-no-category-1+1)
(c-sc-scan-lists-no-category-1-1): Remove unused lexical variable
'here' to pacify byte-compilation warnings in cc-engine.el.
2021-05-04 21:00:05 +01:00
Philip K
3c4619edeb project--buffer-list: Avoid Tramp buffers when possible
* project.el (project--buffer-list): Add file-remote-p check.
2021-05-04 00:36:00 +03:00
Steve Purcell
81fc95bf22 ruby-mode.el: puts and printf do not require args
* lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): puts and
printf can be called without arguments, so the font locking of
"bare" calls to either is incorrect.  The fix is to font-lock them
as for other kernel methods which accepts zero or more arguments
(bug#48180).
2021-05-03 09:41:44 +02:00
Alan Mackenzie
84a2a4715b * lisp/progmodes/cc-defs (c-save-buffer-state): Amend debug spec, t to let*
This should solve part of bug #48100.
2021-05-02 15:25:14 +00:00
Jim Porter
019c70e731 Fix GUD overlay arrows in gdb-mi when debugging over Tramp
* lisp/progmodes/gdb-mi.el (gdb-frame-handler): Use local part of
file name when setting `gud-last-frame'.
2021-05-01 12:09:36 +02:00
Dmitry Gutov
1054525ae3 * lisp/progmodes/project.el: Also bump version. 2021-04-29 05:02:13 +03:00
Dmitry Gutov
a3c77dda95 * lisp/progmodes/xref.el: Bump version. 2021-04-29 05:02:13 +03:00
Dmitry Gutov
6a078097c9 Don't add magic comment to Ruby files for utf-8 encoding
* lisp/progmodes/ruby-mode.el (ruby-encoding-map):
Add entry for utf-8 (bug#48043).
(ruby--detect-encoding): Don't convert to string too early, so
that returning nil is meaningful.
(ruby-mode-set-encoding): Convert to string here.
2021-04-28 05:11:36 +03:00
Andrea Corallo
289000eee7 Merge branch 'feature/native-comp' into into trunk 2021-04-25 20:06:22 +02:00
Alan Mackenzie
142babb9bd CC Mode: Get proper search limits in c-font-lock-cut-off-declarators
* lisp/progmodes/cc-fonts.el (c-font-lock-cut-off-declarators): Instead of
using a crude 2,000 characters back limit for backward searching, which is
erroneous when that point is in a literal, use the already calculated
c-determine-limit result.
2021-04-25 17:40:16 +00:00
Juri Linkov
bc026835df * lisp/progmodes/project.el: Use project-prefixed-buffer-name in more places.
(project-shell, project-eshell): Use project-prefixed-buffer-name (bug#47975).
(project-compilation-buffer-name-function): Add :version tag.
2021-04-25 00:54:01 +03:00
Štěpán Němec
2c2dfbbbf0 ; Fix some typos in doc strings and manuals 2021-04-24 18:26:07 +02:00
Eli Zaretskii
d753b39096 Obsolete the TAB binding in *xref* buffers
* doc/emacs/maintaining.texi (Xref Commands): Remove the
description of the TAB binding.  Enhance the description of the
RET binding.  (Bug#44611)

* etc/NEWS: Announce the obsolescence of TAB binding in XREF.

* lisp/progmodes/xref.el (xref-goto-xref): Improve doc string.
2021-04-24 12:54:44 +03:00
Eli Zaretskii
804f5acda4 Revert "Remove the binding for xref-quit-and-goto-xref"
This reverts commit 522c34f0e8.

Making changes to which there was an explicit disagreement
and a long discussion is unacceptable.  (Bug#44611)
2021-04-23 09:25:35 +03:00
Dmitry Gutov
08fab316a1 Misc changes
* lisp/progmodes/project.el (project-shell, project-eshell):
Simplify.
(project-switch-commands, project-switch-use-entire-map):
Add :group keywords (to fix misattribution to project-vc).
2021-04-23 03:24:47 +03:00
Ivan Sokolov
1c3a86e7fc Introduce project-compilation-buffer-name-function
* lisp/progmodes/project.el (project-compilation-buffer-name-function):
New option.
(project-compile): Use it.
(project-prefixed-buffer-name): New function.

Copyright-paperwork-exempt: yes
2021-04-23 03:14:44 +03:00
Dmitry Gutov
9a15694a45 * lisp/progmodes/xref.el: Remove the "still experimental" note. 2021-04-23 00:19:26 +03:00
Dmitry Gutov
522c34f0e8 Remove the binding for xref-quit-and-goto-xref
* lisp/progmodes/xref.el (xref--xref-buffer-mode-map):
Remove the binding for xref-quit-and-goto-xref (bug#44611).

* doc/emacs/maintaining.texi (Xref Commands): Update.
2021-04-23 00:18:01 +03:00
Stefan Kangas
3e41eccc27 * lisp/progmodes/which-func.el: Doc fixes. 2021-04-22 18:06:36 +02:00
Dmitry Gutov
eadf4cff7c Move part of the fix from project to xref
* lisp/progmodes/project.el (project--find-regexp-in-files):
Don't unquote file names here.

* lisp/progmodes/xref.el (xref-matches-in-files): Do it here.
And only if the first element in the list is quoted (bug#47799).
2021-04-22 17:40:30 +03:00
Stefan Kangas
71b14f2806 Avoid lowering gc-cons-threshold
* lisp/cedet/semantic/wisent/comp.el (wisent--compile-grammar):
* lisp/international/mule-cmds.el (ucs-names):
* lisp/progmodes/ebrowse.el (ebrowse-read):
* test/src/coding-tests.el (benchmark-decoder): Avoid lowering
gc-cons-treshold.
2021-04-22 04:11:02 +02:00
Harald Jörg
c4c9a60c13 cperl-mode: Avoid abbrev expansion in variable names
* lisp/progmodes/cperl-mode.el (cperl-electric-else): Don't expand
scalar variables like '$continue' as keywords.  (Bug#47902)
* test/lisp/progmodes/cperl-mode-tests.el
(cperl-test-hyperactive-electric-else): Verify that keywords are
expanded but variable names aren't.
2021-04-20 22:47:13 +02:00
Andrea Corallo
b5c76530fa Merge remote-tracking branch 'savannah/master' into native-comp 2021-04-19 18:46:50 +02:00
Stefan Kangas
0a4dc70830 ; Normalize and add missing first and last lines 2021-04-19 12:21:01 +02:00
Stefan Kangas
07bb2cbf55 Don't hard-code "~/.emacs.d/" in two more places
* lisp/gnus/gnus-group.el (gnus-read-ephemeral-bug-group):
* lisp/progmodes/js.el (js-js-tmpdir): Don't hard-code
"~/.emacs.d/".
2021-04-19 09:50:13 +02:00
Philipp Stephani
6ebc6e12cf Add quoted filename support to 'project-find-regexp' (Bug#47799).
This is only a band-aid; it would be better to fix xref.el to work
with quoted filenames as well.

* lisp/progmodes/project.el (project--find-regexp-in-files): Unquote
filenames before passing them to 'xref-matches-in-files'.
* test/lisp/progmodes/project-tests.el (project/quoted-directory):
Also test 'project-find-regexp'.
2021-04-18 21:59:25 +02:00
Stefan Kangas
fb9f5501d8 ; Fix typos: emacs lisp -> Emacs Lisp 2021-04-16 14:54:02 +02:00
Stefan Kangas
289ec2d911 ; Remove some useless comments 2021-04-16 14:54:02 +02:00
Dmitry Gutov
f955df1788 Improve quoting of directory names in project/xref
* lisp/progmodes/project.el (project--files-in-directory):
Quote LOCALDIR a bit earlier, to affect
xref--find-ignores-arguments as well (bug#47799).

* lisp/progmodes/xref.el (xref-matches-in-directory):
Quote the dir passed to xref--rgrep-command.
2021-04-16 03:52:44 +03:00
Dmitry Gutov
4180429d5d project--files-in-directory: Handle errors reported by 'find'
* lisp/progmodes/project.el (project--files-in-directory):
Handle errors reported by 'find' (bug#47799).
2021-04-16 03:38:23 +03:00