xref-search-program-alist: Fix searching larger file lists on MS Windows
* lisp/progmodes/xref.el (xref-search-program-alist): Add '-s 10000' to xargs' options when on Windows or DOS. Apparently the xargs port doesn't currently know how to obey the system-wide limits (https://debbugs.gnu.org/bug=61667#521).
This commit is contained in:
parent
1b8b2cf61b
commit
3d6f755331
1 changed files with 17 additions and 11 deletions
|
@ -1820,16 +1820,22 @@ IGNORES is a list of glob patterns for files to ignore."
|
||||||
;; Ripgrep gets jumbled output, though, even with --line-buffered.
|
;; Ripgrep gets jumbled output, though, even with --line-buffered.
|
||||||
;; But Grep seems to be stable. Even without --line-buffered.
|
;; But Grep seems to be stable. Even without --line-buffered.
|
||||||
(defcustom xref-search-program-alist
|
(defcustom xref-search-program-alist
|
||||||
'((grep
|
(let ((xargs-max-chars
|
||||||
.
|
(and (memq system-type '(windows-nt ms-dos))
|
||||||
;; '-s' because 'git ls-files' can output broken symlinks.
|
"-s 10000 ")))
|
||||||
"xargs -0 grep <C> --null -snHE -e <R>")
|
`((grep
|
||||||
(ripgrep
|
.
|
||||||
.
|
;; '-s' because 'git ls-files' can output broken symlinks.
|
||||||
;; '!*/' is there to filter out dirs (e.g. submodules).
|
,(concat "xargs -0 " xargs-max-chars "grep <C> --null -snHE -e <R>"))
|
||||||
"xargs -0 rg <C> --null -nH --no-heading --no-messages -g '!*/' -e <R>"
|
(ripgrep
|
||||||
)
|
.
|
||||||
(ugrep . "xargs -0 ugrep <C> --null -ns -e <R>"))
|
;; '!*/' is there to filter out dirs (e.g. submodules).
|
||||||
|
,(concat "xargs -0 "
|
||||||
|
xargs-max-chars
|
||||||
|
"rg <C> --null -nH --no-heading --no-messages -g '!*/' -e <R>"))
|
||||||
|
(ugrep
|
||||||
|
.
|
||||||
|
,(concat "xargs -0 " xargs-max-chars "ugrep <C> --null -ns -e <R>"))))
|
||||||
"Association list mapping program identifiers to command templates.
|
"Association list mapping program identifiers to command templates.
|
||||||
|
|
||||||
Program identifier should be a symbol, named after the search program.
|
Program identifier should be a symbol, named after the search program.
|
||||||
|
@ -1844,7 +1850,7 @@ The template should have the following fields:
|
||||||
:type '(repeat
|
:type '(repeat
|
||||||
(cons (symbol :tag "Program identifier")
|
(cons (symbol :tag "Program identifier")
|
||||||
(string :tag "Command template")))
|
(string :tag "Command template")))
|
||||||
:version "28.1"
|
:version "29.1"
|
||||||
:package-version '(xref . "1.0.4"))
|
:package-version '(xref . "1.0.4"))
|
||||||
|
|
||||||
(defcustom xref-search-program 'grep
|
(defcustom xref-search-program 'grep
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue