* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
@ 2022-11-30 14:35 Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-11-30 15:09 ` Dmitry Gutov
0 siblings, 1 reply; 9+ messages in thread
From: Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-11-30 14:35 UTC (permalink / raw)
To: 59722
I have the following `project.el' configuration:
(setq xref-search-program 'ripgrep)
and the following `.dir-locals.el' file in a project:
((nil . ((project-ignores . ("apps/**/*.scm")))))
As expected, e.g. `project-find-file' ignores all `.scm' files in the
`apps' subdirectory of the project, however `project-find-regexp' does
not ignore them. TL;DR,
Expected:
`project-find-regexp' honors `project-ignores'
Rudy
In GNU Emacs 30.0.50 (build 2, aarch64-apple-darwin22.1.0, NS
appkit-2299.00 Version 13.0.1 (Build 22A400)) of 2022-11-30 built on
Rudolfs-MacBook-Air.local
Repository revision: 7939184f8e0370e7a3397d492812c6d202c2a193
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2299
System Description: macOS 13.0.1
Configured using:
'configure --with-json --with-tree-sitter'
Configured features:
ACL GLIB GNUTLS JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER PNG
RSVG SQLITE3 THREADS TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB
Important settings:
value of $LC_ALL: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Org
Minor modes in effect:
TeX-PDF-mode: t
flyspell-mode: t
flimenu-global-mode: t
flimenu-mode: t
global-hl-todo-mode: t
shell-dirtrack-mode: t
sly-symbol-completion-mode: t
whitespace-mode: t
display-fill-column-indicator-mode: t
display-line-numbers-mode: t
savehist-mode: t
delete-selection-mode: t
global-goto-address-mode: t
goto-address-mode: t
global-subword-mode: t
subword-mode: t
save-place-mode: t
global-auto-revert-mode: t
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
context-menu-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
size-indication-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
/Users/salutis/.emacs.d/elpa/transient-20221127.2242/transient hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/transient
~/src/org-mode/lisp/ob-exp hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-exp
~/src/org-mode/lisp/ob-emacs-lisp hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp
~/src/org-mode/lisp/oc hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc
~/src/org-mode/lisp/ob-css hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-css
~/src/org-mode/lisp/ob-lob hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lob
~/src/org-mode/lisp/ol-irc hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-irc
~/src/org-mode/lisp/ob-forth hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-forth
~/src/org-mode/lisp/org-macs hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-macs
~/src/org-mode/lisp/ob hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob
~/src/org-mode/lisp/org-version hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-version
~/src/org-mode/lisp/ob-scheme hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-scheme
~/src/org-mode/lisp/ox hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox
~/src/org-mode/lisp/ob-C hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-C
~/src/org-mode/lisp/org-capture hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-capture
~/src/org-mode/lisp/ob-ref hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ref
~/src/org-mode/lisp/ob-clojure hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-clojure
~/src/org-mode/lisp/org-mouse hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-mouse
~/src/org-mode/lisp/org-ctags hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-ctags
~/src/org-mode/lisp/org-entities hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-entities
~/src/org-mode/lisp/org-archive hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-archive
~/src/org-mode/lisp/ob-screen hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-screen
~/src/org-mode/lisp/ol-bibtex hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-bibtex
~/src/org-mode/lisp/ob-haskell hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-haskell
~/src/org-mode/lisp/org-loaddefs hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-loaddefs
~/src/org-mode/lisp/org-table hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-table
~/src/org-mode/lisp/ol-eww hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-eww
~/src/org-mode/lisp/ol-man hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-man
~/src/org-mode/lisp/ox-org hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-org
~/src/org-mode/lisp/org-num hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-num
~/src/org-mode/lisp/org-plot hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-plot
~/src/org-mode/lisp/ol-rmail hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-rmail
~/src/org-mode/lisp/ob-awk hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-awk
~/src/org-mode/lisp/ob-groovy hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-groovy
~/src/org-mode/lisp/ob-octave hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-octave
~/src/org-mode/lisp/org-faces hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-faces
~/src/org-mode/lisp/oc-biblatex hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc-biblatex
~/src/org-mode/lisp/org-colview hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-colview
~/src/org-mode/lisp/ob-R hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-R
~/src/org-mode/lisp/org-refile hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-refile
~/src/org-mode/lisp/org-timer hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-timer
~/src/org-mode/lisp/org-mobile hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-mobile
~/src/org-mode/lisp/ob-fortran hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-fortran
~/src/org-mode/lisp/ob-shell hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-shell
~/src/org-mode/lisp/ob-perl hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-perl
~/src/org-mode/lisp/ob-sqlite hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sqlite
~/src/org-mode/lisp/oc-basic hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc-basic
~/src/org-mode/lisp/ob-sed hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sed
~/src/org-mode/lisp/org-list hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-list
~/src/org-mode/lisp/ob-ruby hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ruby
~/src/org-mode/lisp/ob-eval hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-eval
~/src/org-mode/lisp/org-habit hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-habit
~/src/org-mode/lisp/org-clock hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-clock
~/src/org-mode/lisp/org-goto hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-goto
~/src/org-mode/lisp/ox-html hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-html
~/src/org-mode/lisp/org-src hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-src
~/src/org-mode/lisp/ob-lisp hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lisp
~/src/org-mode/lisp/ol-eshell hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-eshell
~/src/org-mode/lisp/ob-ditaa hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ditaa
~/src/org-mode/lisp/org-pcomplete hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-pcomplete
~/src/org-mode/lisp/org-lint hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-lint
~/src/org-mode/lisp/ox-latex hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-latex
~/src/org-mode/lisp/ob-sass hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sass
~/src/org-mode/lisp/ob-tangle hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-tangle
~/src/org-mode/lisp/ob-calc hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-calc
~/src/org-mode/lisp/ob-java hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-java
~/src/org-mode/lisp/ox-icalendar hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-icalendar
~/src/org-mode/lisp/ol-mhe hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-mhe
~/src/org-mode/lisp/org-attach-git hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-attach-git
~/src/org-mode/lisp/ox-md hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-md
~/src/org-mode/lisp/ox-beamer hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-beamer
~/src/org-mode/lisp/org-element hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-element
~/src/org-mode/lisp/oc-natbib hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc-natbib
~/src/org-mode/lisp/org-protocol hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-protocol
~/src/org-mode/lisp/ob-gnuplot hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot
~/src/org-mode/lisp/org-tempo hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-tempo
~/src/org-mode/lisp/ob-latex hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-latex
~/src/org-mode/lisp/ol-w3m hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-w3m
~/src/org-mode/lisp/org-id hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-id
~/src/org-mode/lisp/ox-man hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-man
~/src/org-mode/lisp/ol-doi hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-doi
~/src/org-mode/lisp/org-feed hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-feed
~/src/org-mode/lisp/ob-julia hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-julia
~/src/org-mode/lisp/ob-lua hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lua
~/src/org-mode/lisp/ob-table hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-table
~/src/org-mode/lisp/ob-ocaml hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ocaml
~/src/org-mode/lisp/oc-csl hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc-csl
~/src/org-mode/lisp/ol-gnus hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-gnus
~/src/org-mode/lisp/org-indent hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-indent
~/src/org-mode/lisp/ob-lilypond hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lilypond
~/src/org-mode/lisp/ob-matlab hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-matlab
~/src/org-mode/lisp/org-datetree hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-datetree
~/src/org-mode/lisp/ol-docview hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-docview
~/src/org-mode/lisp/ob-python hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-python
~/src/org-mode/lisp/ob-makefile hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-makefile
~/src/org-mode/lisp/org-duration hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-duration
~/src/org-mode/lisp/org-agenda hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-agenda
~/src/org-mode/lisp/ob-dot hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-dot
~/src/org-mode/lisp/ob-js hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-js
~/src/org-mode/lisp/ox-publish hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-publish
~/src/org-mode/lisp/org-inlinetask hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
~/src/org-mode/lisp/ob-org hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-org
~/src/org-mode/lisp/org-keys hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-keys
~/src/org-mode/lisp/ob-core hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-core
~/src/org-mode/lisp/org-compat hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-compat
~/src/org-mode/lisp/ol hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol
~/src/org-mode/lisp/ox-odt hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-odt
~/src/org-mode/lisp/ol-info hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-info
~/src/org-mode/lisp/ob-plantuml hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-plantuml
~/src/org-mode/lisp/ob-eshell hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-eshell
~/src/org-mode/lisp/ox-ascii hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-ascii
~/src/org-mode/lisp/ox-koma-letter hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-koma-letter
~/src/org-mode/lisp/ob-maxima hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-maxima
~/src/org-mode/lisp/org hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org
~/src/org-mode/lisp/ol-bbdb hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-bbdb
~/src/org-mode/lisp/org-macro hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-macro
~/src/org-mode/lisp/ob-sql hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sql
~/src/org-mode/lisp/org-attach hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-attach
~/src/org-mode/lisp/ob-processing hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-processing
~/src/org-mode/lisp/ox-texinfo hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-texinfo
~/src/org-mode/lisp/org-crypt hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-crypt
~/src/org-mode/lisp/org-footnote hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-footnote
~/src/org-mode/lisp/ob-comint hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-comint
Features:
(shadow sort notmuch notmuch-tree notmuch-jump notmuch-hello
notmuch-show notmuch-print notmuch-crypto notmuch-mua notmuch-message
notmuch-draft notmuch-maildir-fcc notmuch-address notmuch-company
notmuch-parser notmuch-wash coolj icalendar diary-lib diary-loaddefs
notmuch-tag notmuch-lib notmuch-version notmuch-compat mail-extr
emacsbug sh-script treesit executable ruby-mode smie ebnf-mode pulse
color misearch multi-isearch hl-line grep cape geiser-mode geiser-xref
geiser-compile geiser-guile info-look transient geiser-debug geiser-repl
geiser-image geiser-capf geiser-doc geiser-menu geiser-autodoc
geiser-edit geiser-completion geiser-eval geiser-connection tq
geiser-syntax geiser-log geiser-popup view scheme vc-hg vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs log-view pcvs-util char-fold orderless rect
cursor-sensor imenu ess-r-mode ess-r-flymake ess-r-xref ess-trns
ess-r-package ess-r-completion ess-roxy ess-r-syntax ess-rd hideshow
ess-s-lang ess-help ess-mode ess-inf ess-tracebug tramp tramp-loaddefs
trampver tramp-integration files-x tramp-compat ess ess-utils ess-custom
citar-org oc-basic citar citar-file citar-cache citar-format preview
reftex-dcr reftex reftex-loaddefs reftex-vars font-latex latex
latex-flymake tex-ispell tex-style tex crm texmathp tex-mode vc-git
diff-mode tempo image-file image-converter disp-table ol-eww eww
url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822
mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util
mail-prsvr ol-docview doc-view image-mode exif cus-start ls-lisp dired
dired-loaddefs ol-bbdb ol-w3m ol-doi org-link-doi paredit edmacro kmacro
flyspell ispell flimenu hl-todo compat compat-macs modus-operandi-theme
modus-themes pdf-loader package-vc vc vc-dispatcher lisp-mnt finder-inf
ox-texinfo ox-md oc-csl citeproc citeproc-itemgetters citeproc-biblatex
parse-time citeproc-bibtex parsebib ol-bibtex citeproc-cite
citeproc-subbibs citeproc-sort citeproc-name citeproc-formatters
citeproc-number rst citeproc-proc citeproc-disamb citeproc-itemdata
citeproc-generic-elements citeproc-macro citeproc-choose citeproc-date
citeproc-context citeproc-prange citeproc-style citeproc-locale
citeproc-term f f-shortdoc shortdoc citeproc-rt citeproc-lib citeproc-s
s let-alist queue dash bibtex iso8601 ox-odt rng-loc rng-uri rng-parse
rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-latex ox-icalendar org-habit org-agenda ox-html table
ox-ascii ox-publish ox org-element org-persist xdg org-id org-refile
avl-tree org-clock ob-lisp ob-makefile ob-latex ob-scheme geiser ob-dot
ob-R ob-C cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs ob-shell shell ob-java ob-sqlite ob-sql ob-org
sly gud sly-completion sly-buttons easy-mmode sly-messages sly-common
apropos etags fileloop generator xref arc-mode archive-mode hyperspec
whitespace display-fill-column-indicator display-line-numbers fortune
flymake-proc flymake project compile text-property-search savehist comp
pcase derived comp-cstr warnings cl-extra jka-compr delsel goto-addr
thingatpt cap-words superword subword saveplace cus-edit pp cus-load
wid-edit bug-reference autorevert filenotify org ob ob-tangle ob-ref
ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
pcomplete comint ansi-osc ansi-color org-list org-footnote org-faces
org-entities time-date noutline outline icons ob-emacs-lisp ob-core
ob-eval org-cycle org-table ol rx org-fold org-fold-core org-keys oc
org-loaddefs find-func cal-menu calendar cal-loaddefs org-version
org-compat org-macs format-spec geiser-guile-autoloads geiser-impl
help-fns radix-tree help-mode geiser-custom geiser-base ring
flyspell-correct-autoloads flymake-grammarly-autoloads flimenu-autoloads
grammarly-autoloads markdown-mode-autoloads org-drill-autoloads
rainbow-mode-autoloads bbdb-autoloads vterm-autoloads paredit-autoloads
swift-mode-autoloads htmlize-autoloads emms-autoloads
yaml-mode-autoloads websocket-autoloads geiser-autoloads
kotlin-mode-autoloads persist-autoloads request-autoloads
bnf-mode-autoloads cape-autoloads imenu-list-autoloads mentor-autoloads
async-autoloads xml-rpc-autoloads magit-autoloads git-commit-autoloads
modus-themes-autoloads url-scgi-autoloads side-hustle-autoloads
magit-section-autoloads telega-autoloads rainbow-identifiers-autoloads
password-store-autoloads with-editor-autoloads orderless-autoloads
citar-autoloads citeproc-autoloads queue-autoloads f-autoloads
s-autoloads dash-autoloads string-inflection-autoloads diff-hl-autoloads
parsebib-autoloads ebnf-mode-autoloads graphviz-dot-mode-autoloads
visual-fill-column-autoloads hl-todo-autoloads org-pomodoro-autoloads
alert-autoloads log4e-autoloads gntp-autoloads sly-autoloads
ess-autoloads auctex-autoloads tex-site elfeed-tube-mpv-autoloads
mpv-autoloads sql-indent-autoloads sqlup-mode-autoloads
pdf-tools-autoloads tablist-autoloads elfeed-tube-autoloads
aio-autoloads elfeed-autoloads transient-autoloads info compat-autoloads
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads kqueue cocoa ns lcms2
multi-tty make-network-process emacs)
Memory information:
((conses 16 1563388 84174)
(symbols 48 72315 45)
(strings 32 348928 17709)
(string-bytes 1 9992001)
(vectors 16 98854)
(vector-slots 8 2343903 144867)
(floats 8 608 345)
(intervals 56 40593 1158)
(buffers 992 31))
--
"'Contrariwise,' continued Tweedledee, 'if it was so, it might be; and
if it were so, it would be; but as it isn't, it ain't. That's logic.'"
-- Lewis Carroll, Through the Looking Glass, 1871/1872
Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
2022-11-30 14:35 bug#59722: 30.0.50; project-find-regexp searches project-ignored files Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-11-30 15:09 ` Dmitry Gutov
2022-11-30 23:20 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 9+ messages in thread
From: Dmitry Gutov @ 2022-11-30 15:09 UTC (permalink / raw)
To: Rudolf Adamkovič, 59722
On 30/11/2022 16:35, Rudolf Adamkovič via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>
> I have the following `project.el' configuration:
>
> (setq xref-search-program 'ripgrep)
>
> and the following `.dir-locals.el' file in a project:
>
> ((nil . ((project-ignores . ("apps/**/*.scm")))))
>
> As expected, e.g. `project-find-file' ignores all `.scm' files in the
> `apps' subdirectory of the project, however `project-find-regexp' does
> not ignore them. TL;DR,
>
> Expected:
>
> `project-find-regexp' honors `project-ignores'
Hi! 'project-ignores' is not a variable, it's a generic function.
What backend are you using? If it's (most likely) project-vc, then the
variable you must be looking for is 'project-vc-ignores'.
To answer the "what backend" question, you can evaluate (project-current).
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
2022-11-30 15:09 ` Dmitry Gutov
@ 2022-11-30 23:20 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-11-30 23:30 ` Dmitry Gutov
0 siblings, 1 reply; 9+ messages in thread
From: Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-11-30 23:20 UTC (permalink / raw)
To: Dmitry Gutov, 59722
Dmitry Gutov <dgutov@yandex.ru> writes:
> Hi! 'project-ignores' is not a variable, it's a generic function.
Oops! Correct.
> What backend are you using? If it's (most likely) project-vc, then the
> variable you must be looking for is 'project-vc-ignores'.
I do use the Git (VC) backend. Correction:
When I set the dir locals file to
((nil . ((project-vc-ignores . ("apps/**/*.scm")))))
I face the problem where C-x p f ignores the files in the "apps"
directory, as expected, but C-x p g does not.
[The "apps" directory in question contains symbolic links that make
Ripgrep, invoked via C-x p g, see various files multiple times,
resulting in what looks like "chaos".]
I apologize for the confusion!
Rudy
--
"The introduction of suitable abstractions is our only mental aid to
organize and master complexity."
-- Edsger Wybe Dijkstra, 1930-2002
Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
2022-11-30 23:20 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-11-30 23:30 ` Dmitry Gutov
2022-12-04 23:36 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 9+ messages in thread
From: Dmitry Gutov @ 2022-11-30 23:30 UTC (permalink / raw)
To: Rudolf Adamkovič, 59722
On 01/12/2022 01:20, Rudolf Adamkovič via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>> What backend are you using? If it's (most likely) project-vc, then the
>> variable you must be looking for is 'project-vc-ignores'.
>
> I do use the Git (VC) backend. Correction:
>
> When I set the dir locals file to
>
> ((nil . ((project-vc-ignores . ("apps/**/*.scm")))))
>
> I face the problem where C-x p f ignores the files in the "apps"
> directory, as expected, but C-x p g does not.
Okay.
I wonder how that could be possible: project-find-regexp (that if what
you have 'C-x p g' bound to, right?) does the search across the files
returned by 'project-files'. So there is just one place that interprets
the ignores' list and produces the list of files, and both
project-find-file and project-find-regexp consume the result.
Can you step through 'project-find-regexp' with edebug? Does the return
value of 'project-files' (saved to 'files') contain the extra entries?
Or are you calling 'project-find-regexp' with a prefix, which switches
it to a different mode (the 'project--files-in-directory' branch)?
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
2022-11-30 23:30 ` Dmitry Gutov
@ 2022-12-04 23:36 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-05 0:43 ` Dmitry Gutov
0 siblings, 1 reply; 9+ messages in thread
From: Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-04 23:36 UTC (permalink / raw)
To: Dmitry Gutov, 59722
Dmitry Gutov <dgutov@yandex.ru> writes:
> Okay.
Thank you for your time, Dmitry!
> I wonder how that could be possible: project-find-regexp (that if what
> you have 'C-x p g' bound to, right?) does the search across the files
> returned by 'project-files'. So there is just one place that
> interprets the ignores' list and produces the list of files, and both
> project-find-file and project-find-regexp consume the result.
I provide a hypothesis about how that could happen below.
> Can you step through 'project-find-regexp' with edebug? Does the
> return value of 'project-files' (saved to 'files') contain the extra
> entries?
So, I debugged the problem.
FINDING 1:
The first finding may explain why I see the ignored files in C-x p g.
For my dir-local ignore pattern
((nil . ((project-ignores . ("apps/**/*.scm")))))
Emacs ends up calling
git ls-files -z -c --exclude-standard \
--no-empty-directory -o -- :(exclude,glob,top)apps/**/*.scm
which gives a listing that DOES NOT contain (as expected) any '*.scm'
files in the 'apps' directory, such as
apps/lib-app-core/src/main/assets/app/atrium.scm
apps/lib-app-core/src/main/assets/app/database.scm
...
but it still DOES contain "logically empty" parent directories (as not
expected, perhaps) that would have contained the ignored files if not
ignored, such as
apps/lib-app-core/src/main/assets/app
My interpretation:
git ls-files does not output just files, as one would expect, but also
directories with no matching files. grep then gets a list of files and
possibly also directories, and searches through it all.
FINDING 2:
Given the configuration
(setq project-switch-use-entire-map t
project-switch-commands '((nil "C-x p")))
when I type
C-x p p <...project...> g
then Emacs uses the global project ignores and not the ones defined in
the directory-local file. However,
C-x p g
inside of any project buffer works OK.
Notes:
While probably not the root cause, this bug made debugging much harder,
until I realized it exists, so I report this finding as well.
Rudy
--
"One can begin to reason only when a clear picture has been formed in
the imagination."
-- Walter Warwick Sawyer, Mathematician's Delight, 1943
Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
2022-12-04 23:36 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-05 0:43 ` Dmitry Gutov
2022-12-09 16:21 ` Dmitry Gutov
2022-12-11 12:38 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 2 replies; 9+ messages in thread
From: Dmitry Gutov @ 2022-12-05 0:43 UTC (permalink / raw)
To: Rudolf Adamkovič, 59722
On 05/12/2022 01:36, Rudolf Adamkovič via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>> Can you step through 'project-find-regexp' with edebug? Does the
>> return value of 'project-files' (saved to 'files') contain the extra
>> entries?
>
> So, I debugged the problem.
Thanks!
> FINDING 1:
>
> The first finding may explain why I see the ignored files in C-x p g.
>
> For my dir-local ignore pattern
>
> ((nil . ((project-ignores . ("apps/**/*.scm")))))
project-vc-ignores, you mean.
> Emacs ends up calling
>
> git ls-files -z -c --exclude-standard \
> --no-empty-directory -o -- :(exclude,glob,top)apps/**/*.scm
>
> which gives a listing that DOES NOT contain (as expected) any '*.scm'
> files in the 'apps' directory, such as
>
> apps/lib-app-core/src/main/assets/app/atrium.scm
> apps/lib-app-core/src/main/assets/app/database.scm
> ...
>
> but it still DOES contain "logically empty" parent directories (as not
> expected, perhaps) that would have contained the ignored files if not
> ignored, such as
>
> apps/lib-app-core/src/main/assets/app
Huh, interesting. Could you try to show a similar command invocation
which would make Git output include a "logically empty" directory for
the Emacs repo? So that we have a common public project to compare.
Or alternatively a project-vc-ignores value which, when put in
.dir-locals.el at the top, produces such effect on the return value of
(project-files (project-current)).
As a counter-example, if I add
(project-vc-ignores . ("./doc/emacs/*"))
there, 'project-files' does not include 'doc/emacs/' at all. Not files
in it, not it separately as a directory.
> My interpretation:
>
> git ls-files does not output just files, as one would expect, but also
> directories with no matching files. grep then gets a list of files and
> possibly also directories, and searches through it all.
That would make sense, if it's indeed what happens. Perhaps it's a bug
in our code, or this behavior is specific to certain versions of Git.
I currently have Git 2.37.2 installed.
> FINDING 2:
>
> Given the configuration
>
> (setq project-switch-use-entire-map t
> project-switch-commands '((nil "C-x p")))
>
> when I type
>
> C-x p p <...project...> g
>
> then Emacs uses the global project ignores and not the ones defined in
> the directory-local file. However,
>
> C-x p g
>
> inside of any project buffer works OK.
And that one is probably a regression from 2389158a31b4a.
It won't revert cleanly now, unfortunately. Here's a quick patch which
should fix project-switch-project (but not any other potential uses of
project-vc values outside of the associated directory):
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 3f4a5fb04b..c7fb39b0fb 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -1770,7 +1770,11 @@ project-switch-project
project-switch-commands
(project--switch-project-command))))
(let ((project-current-directory-override dir))
- (call-interactively command))))
+ (with-temp-buffer
+ (let ((default-directory dir)
+ (enable-local-variables :all))
+ (hack-dir-local-variables-non-file-buffer))
+ (call-interactively command)))))
(provide 'project)
;;; project.el ends here
It's mostly to help with your debugging, since it breaks the default
prompt for 'project-find-regexp' called from 'C-x p p' as well.
I'll have to think of the best way to resolve this: revert said commit
outright (with updates for the new code), or do it with certain tweaks.
> Notes:
>
> While probably not the root cause, this bug made debugging much harder,
> until I realized it exists, so I report this finding as well.
Thank you.
^ permalink raw reply related [flat|nested] 9+ messages in thread
* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
2022-12-05 0:43 ` Dmitry Gutov
@ 2022-12-09 16:21 ` Dmitry Gutov
2022-12-11 12:38 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 0 replies; 9+ messages in thread
From: Dmitry Gutov @ 2022-12-09 16:21 UTC (permalink / raw)
To: Rudolf Adamkovič, 59722
Hi Rudolf,
On 05/12/2022 02:43, Dmitry Gutov wrote:
> I'll have to think of the best way to resolve this: revert said commit
> outright (with updates for the new code), or do it with certain tweaks.
I have pushed a fix for this to emacs-29 (commit d268ab1c5d).
Please check whether the original problem remains.
Did you have any luck with further debugging the situation with 'git
ls-files'?
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
2022-12-05 0:43 ` Dmitry Gutov
2022-12-09 16:21 ` Dmitry Gutov
@ 2022-12-11 12:38 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-11 20:13 ` Dmitry Gutov
1 sibling, 1 reply; 9+ messages in thread
From: Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-11 12:38 UTC (permalink / raw)
To: Dmitry Gutov, 59722
Dmitry Gutov <dgutov@yandex.ru> writes:
>> ((nil . ((project-ignores . ("apps/**/*.scm")))))
>
> project-vc-ignores, you mean.
Correct. Dmitry, I apologize for causing confusion!
>> Emacs ends up calling
>>
>> git ls-files -z -c --exclude-standard \
>> --no-empty-directory -o -- :(exclude,glob,top)apps/**/*.scm
>>
>> [...]
>
> Huh, interesting. Could you try to show a similar command invocation
> which would make Git output include a "logically empty" directory for
> the Emacs repo? So that we have a common public project to compare.
I could not reproduce the problem with the Emacs source directory, but I
did not give up! And, after a whole lot of head-scratching, I found the
root cause of the problem:
When `git ls-files' finds a symlink that points to a directory, it does
*not* follow it. Instead, it lists it in the output. In my case, the
symlink pointed to a directory with all of its files ignored. However,
and importantly, upon further testing, I found that ignores do *not*
matter.
In summary, any symlinks to directories shallow-appear in `git ls-files'
outputs. Emacs hands the list to Ripgrep, and Ripgrep follows symlinks,
possibly searching through ignored directories, effectively ignoring
`project-vc-ignores' from the point of view of the user.
Phew!
Rudy
--
"The introduction of suitable abstractions is our only mental aid to
organize and master complexity."
-- Edsger Wybe Dijkstra, 1930-2002
Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#59722: 30.0.50; project-find-regexp searches project-ignored files
2022-12-11 12:38 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-11 20:13 ` Dmitry Gutov
0 siblings, 0 replies; 9+ messages in thread
From: Dmitry Gutov @ 2022-12-11 20:13 UTC (permalink / raw)
To: Rudolf Adamkovič, 59722
On 11/12/2022 14:38, Rudolf Adamkovič via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
> Dmitry Gutov <dgutov@yandex.ru> writes:
>
>>> ((nil . ((project-ignores . ("apps/**/*.scm")))))
>>
>> project-vc-ignores, you mean.
>
> Correct. Dmitry, I apologize for causing confusion!
No problem. I just wanted to make double-sure that the typo is not the
cause of the issue.
>>> Emacs ends up calling
>>>
>>> git ls-files -z -c --exclude-standard \
>>> --no-empty-directory -o -- :(exclude,glob,top)apps/**/*.scm
>>>
>>> [...]
>>
>> Huh, interesting. Could you try to show a similar command invocation
>> which would make Git output include a "logically empty" directory for
>> the Emacs repo? So that we have a common public project to compare.
>
> I could not reproduce the problem with the Emacs source directory, but I
> did not give up! And, after a whole lot of head-scratching, I found the
> root cause of the problem:
>
> When `git ls-files' finds a symlink that points to a directory, it does
> *not* follow it. Instead, it lists it in the output. In my case, the
> symlink pointed to a directory with all of its files ignored. However,
> and importantly, upon further testing, I found that ignores do *not*
> matter.
Okay, yes, that seems to be the case. And there seems to be no way to
have 'git ls-files' include symlinks in the output.
I can suggest two options here, both non-ideal:
- Ignore the whole symlinked directories by adding ignore entries that
match their symlink files, rather than directories. For example, by
setting project-vc-ignores to '("apps/*") or '("apps/**"), or with
individual entries for each of them. That is, if you want them ignored
whole.
- Here's what seems to be a (Linux-only) way to have Git follow
symlinks: https://github.com/Alcaro/GitBSLR (found at
https://stackoverflow.com/a/49138555/615245).
Another automatic approach would be to add a new value in
xref-search-program-alist that would first pipe through a
non-symlink-ness checker. Or modify the existing values.
But I'm yet to write a suitable command or pipeline (help welcome!), so
I'm not sure how practical that is, and what's the average overhead.
The obvious choice of (seq-filter #'file-regular-p (project-files
(project-current))) creates a large overhead (takes about x3 time here
as just listing the files). That too much, I think.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-12-11 20:13 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-30 14:35 bug#59722: 30.0.50; project-find-regexp searches project-ignored files Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-11-30 15:09 ` Dmitry Gutov
2022-11-30 23:20 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-11-30 23:30 ` Dmitry Gutov
2022-12-04 23:36 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-05 0:43 ` Dmitry Gutov
2022-12-09 16:21 ` Dmitry Gutov
2022-12-11 12:38 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-11 20:13 ` Dmitry Gutov
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).