Subject: =?UTF-8?Q?28.0.50; _project-find-regexp's_xref-mode_result_buffer_is_not_?=editable

From: "Christian Tietze" <[email-masked]>
Date: Thu, 24 Jun 2021 15:49:10 +0200

TL;DR: The `xref-mode' results of `project-find-regexp' are not editable. Something like `occur-edit-mode' is missing. 

1) Open a project via C-x p p
2) Select 'g' to find in project (project-find-regexp)
3) Search for a phrase that produces results
4) In the resulting Xref buffer, try to edit the results

Invoking `occur-edit-mode' manually doesn't do the trick. There appears to
be no way to use this Xref facility to edit around search results in-place.

Other packages like `wgrep' or `ag' support this. The fantastic-looking Xref
results of `project-find-regexp' don't. Would be great if that was added.

Cheers,
Christian

----

In GNU Emacs 28.0.50 (build 2, x86_64-apple-darwin19.6.0, NS appkit-1894.60 Version 10.15.7 (Build 19H524))
 of 2021-03-15 built on mbp20.local
Repository revision: f2b0cfff93afeeb1b6d84bfce4bde83dbe4862cb
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2022
System Description:  macOS 11.4

Configured using:
 'configure --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs-head@28/28.0.50_1/share/info/emacs
 --prefix=/usr/local/Cellar/emacs-head@28/28.0.50_1 --without-x
 --with-dbus --with-imagemagick --with-modules --without-pop
 --with-gnutls --with-rsvg --with-xml2 --with-xwidgets --with-ns
 --disable-ns-self-contained'

Configured features:
ACL DBUS GIF GLIB GMP GNUTLS IMAGEMAGICK JPEG JSON LCMS2 LIBXML2 MODULES
NOTIFY KQUEUE NS PDUMPER PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS
XWIDGETS ZLIB

Important settings:
  value of $LANG: en_DE.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Occur

Minor modes in effect:
  TeX-PDF-mode: t
  treemacs-filewatch-mode: t
  treemacs-git-mode: deferred
  treemacs-fringe-indicator-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  show-paren-mode: t
  marginalia-mode: t
  global-edit-server-edit-mode: t
  xah-fly-keys: t
  delete-selection-mode: t
  which-key-mode: t
  selectrum-prescient-mode: t
  real-auto-save-mode: t
  global-real-auto-save-mode: t
  popup-buffers-mode: t
  all-the-icons-ibuffer-mode: t
  doom-modeline-mode: t
  override-global-mode: t
  shell-dirtrack-mode: t
  projectile-mode: t
  global-emojify-mode: t
  emojify-mode: t
  auto-dim-other-buffers-mode: t
  selectrum-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Load-path shadows:
(here was a list of 'hides' about org-mode checked out from git)

Features:
(shadow emacsbug calc-map calc-stat calc-vec calc-ext calc-menu
calc-aent calc calc-loaddefs calc-macs consult-imenu repeat tramp-cmds
tramp-cache highlight-indent-guides timezone texinfo toolbar-x reporter
context plain-tex tex-buf latex-mode-expansions latex latex-flymake
tex-ispell tex-style tex texmathp ispell consult-icomplete icomplete
let-alist lsp-icons git-rebase ediff ediff-merg ediff-mult ediff-wind
ediff-diff ediff-help ediff-init ediff-util benchmark skeleton ibuf-macs
thunk autoload lisp-mnt url-cache mouse-copy mouse-drag gnus-cite
so-long xt-mouse display-fill-column-indicator ob-eukleides
org-checklist org-collector org-invoice org-learn org-mac-link
org-mairix org-toc ox-extra ob-ditaa ob-plantuml org-colview org-crypt
org-habit org-goto debug backtrace scheme view ox-org ox-odt ox-latex
ox-icalendar ox-html table ox-ascii ox-publish ox company-php
ac-php-core popup xcscope lsp-ivy ivy ivy-faces ivy-overlay colir lsp-ui
lsp-ui-flycheck lsp-ui-doc xwidget lsp-ui-imenu lsp-ui-peek
lsp-ui-sideline lsp-ui-util tex-mode hl-todo markdown-mode+
goto-last-change neotree treemacs-projectile treemacs-all-the-icons
treemacs treemacs-header-line treemacs-compatibility treemacs-mode
treemacs-bookmarks treemacs-interface treemacs-extensions
treemacs-mouse-interface treemacs-tags treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-fringe-indicator treemacs-scope treemacs-faces treemacs-icons
treemacs-themes treemacs-core-utils pfuture treemacs-logging
treemacs-customization treemacs-macros ranger diranged revbufs
zoom-window vterm term ehelp vterm-module term/xterm xterm shortdoc
cl-print completion dos-w32 find-cmd cus-edit help-fns radix-tree
org-clock misearch multi-isearch bug-reference magit-extras
magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
which-func magit-diff smerge-mode diff git-commit log-edit pcvs-util
add-log magit-core magit-autorevert magit-margin magit-transient
magit-process with-editor magit-mode transient magit-git magit-section
magit-utils web-mode-expansions web-mode dired-aux gnus-dired vc-mtn
vc-hg vc-bzr vc-src vc-sccs vc-cvs vc-rcs vc lsp-zig lsp-steep
lsp-svelte lsp-sqls lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-vetur
lsp-html lsp-verilog lsp-vala lsp-terraform lsp-tex lsp-sorbet
lsp-solargraph lsp-rust lsp-rf lsp-r lsp-purescript lsp-pylsp lsp-pyls
lsp-pwsh lsp-php lsp-perl lsp-ocaml lsp-nix lsp-nim lsp-markdown lsp-lua
lsp-kotlin lsp-json lsp-javascript lsp-haxe lsp-groovy lsp-hack lsp-go
lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang
lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp
lsp-crystal lsp-cmake lsp-clojure lsp-clangd lsp-bash lsp-angular
lsp-ada lsp-actionscript lsp-sourcekit lsp lsp-mode lsp-protocol spinner
lv inline ewoc cal-move conf-mode sh-script executable
js-mode-expansions js swift-mode swift-mode-imenu swift-mode-repl
swift-mode-beginning-of-defun swift-mode-font-lock
swift-mode-standard-types swift-mode-indent swift-mode-lexer char-fold
yaml-mode vc-git vc-dispatcher rng-xsd xsd-regexp rng-cmpct two-column
hideshow paren subword-mode-expansions cap-words superword subword
shr-color mm-archive marginalia consult-flycheck flycheck
consult-selectrum consult recentf tree-widget bookmark posframe pp
gnutls network-stream mailalias qp sort company-box company-box-doc
frame-local company-box-icons dash-functional company-oddmuse
company-keywords company-etags company-gtags company-dabbrev-code
company-dabbrev company-files company-clang company-capf company-cmake
company-semantic company-template company-bbdb company-robe mail-extr
server modus-vivendi-theme modus-operandi-theme cal-iso olivetti goggles
pulse init company-ledger ledger-mode ledger-check ledger-texi
ledger-test ledger-sort ledger-report ledger-reconcile ledger-occur
ledger-fonts ledger-fontify ledger-state ledger-complete ledger-schedule
ledger-init ledger-xact ledger-post ledger-exec ledger-navigate eshell
esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups
esh-util ledger-context ledger-commodities ledger-regex mu4e desktop
frameset mu4e-org mu4e-main mu4e-view mu4e-headers mu4e-compose
mu4e-context mu4e-draft mu4e-actions rfc2368 smtpmail sendmail mu4e-mark
mu4e-message flow-fill mu4e-proc mu4e-utils doc-view jka-compr
image-mode exif mu4e-lists mu4e-vars mu4e-meta 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 diff-mode
coolj notmuch-query goto-addr icalendar notmuch-tag notmuch-lib
notmuch-compat epa-file edit-server php-mode mode-local imenu
cc-mode-expansions cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs php-face php php-project flymake-proc
flymake warnings emmet-mode cl company-anaconda anaconda-mode pythonic
robe etags fileloop xref project inf-ruby ruby-electric
ruby-mode-expansions ruby-mode smie company centered-cursor-mode
yasnippet-snippets yasnippet undo-fu expand-region text-mode-expansions
the-org-mode-expansions python-el-fgallina-expansions
nxml-mode-expansions html-mode-expansions er-basic-expansions
expand-region-core expand-region-custom xah-fly-keys ido dired-x
wgrep-ag wgrep ag vc-svn find-dired rect unfill delsel define-word
rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt
rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap sgml-mode
nxml-util nxml-enc xmltok url-http url-auth url-gw nsm command-log-mode
which-key linum-relative linum display-line-numbers org-autolist
org-duration autorevert filenotify org-eldoc org-indent image-file
image-converter org-element avl-tree generator disp-table ol-notmuch
org-tempo tempo org-protocol ol-gnus nnselect gnus-search eieio-opt
speedbar ezimage dframe gnus-art mm-uu mml2015 mm-view mml-smime smime
dig gnus-sum shr kinsoku svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
gnus-spec gnus-int gnus-range message rmc puny rfc822 mml mml-sec epa
derived epg epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr
wid-edit ol-bibtex bibtex ol-bbdb org-agenda org-refile appt diary-lib
diary-loaddefs ob-shell ob-python python tramp-sh ob-markdown
markdown-mode color ob-ruby ob-dot org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete
org-list org-faces org-entities noutline outline org-version
ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat org-macs
org-loaddefs find-func cal-menu calendar cal-loaddefs embark ffap
selectrum-prescient prescient selectrum minibuf-eldef crm real-auto-save
rotate popup-buffers all-the-icons-ibuffer all-the-icons-dired delight
use-package-delight doom-modeline doom-modeline-segments
doom-modeline-env doom-modeline-core shrink-path rx f s all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons hl-line modus-themes
use-package-bind-key bind-key sudo-edit tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat shell pcomplete parse-time
iso8601 time-date ls-lisp format-spec edmacro kmacro
reveal-in-osx-finder dired dired-loaddefs rvm exec-path-from-shell try
cl-extra help-mode use-package-ensure use-package-core projectile grep
compile text-property-search comint ansi-color ring ibuf-ext ibuffer
ibuffer-loaddefs thingatpt emojify advice apropos tar-mode arc-mode
archive-mode pcase ht dash auto-dim-other-buffers face-remap cus-start
cus-load finder-inf tex-site easy-mmode info package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type 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 elisp-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 facemenu
font-core term/tty-colors frame minibuffer cl-generic 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 charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads
xwidget-internal dbusbind kqueue cocoa ns lcms2 multi-tty
make-network-process emacs)

Memory information:
((conses 16 3752285 1433331)
 (symbols 48 107327 9)
 (strings 32 644861 119971)
 (string-bytes 1 18012918)
 (vectors 16 239340)
 (vector-slots 8 5836611 554933)
 (floats 8 3416 2117)
 (intervals 56 215672 23898)
 (buffers 992 287))