20.09.2022
project
Встроенная штука для проектов. Пока ориентируется на всякий контроль версий, чтоб распознавать проекты. Похоже, неплохо обрастает дополнениями.
- https://github.com/buzztaiki/project-rootfile.el - возможность указывать как проект каталог с определённым файлом в ней. Пока попробовала настроить на
.projectile
, чтоб работали ещё и прожектайловские возможности. И да, без такой штуки для меня project был неюзабелен. Не всё в vcs, а кое-что в большом репозитории, где мне нужны отдельные каталоги. - https://github.com/karthink/project-x - занятная дополняшка про сохранение сессии.
- https://andreyorst.gitlab.io/posts/2022-07-16-project-el-enhancements/ - про ограничить запрос на сохранение буферов при действиях с проектом - этим проектом.
Основные возможности:
- C-x p p
- Переключиться в проект. Run an Emacs command for another project (project-switch-project).
- prompts you to choose a directory among known project roots, and then displays the menu of available commands to operate on the project you choose.
- The variable project-switch-commands controls which commands are available in the menu, and which key invokes each command.
- The variable project-list-file names the file in which Emacs records the list of known projects.
- C-x p b
- Switch to another buffer belonging to the current project (project-switch-to-buffer).
- C-x p k
- Kill all live buffers that belong to the current project (project-kill-buffers).
- M-x project-forget-project
- Remove a known project from the project-list-file.
- C-x p f
- Visit a file that belongs to the current project (project-find-file).
- C-x p g
- Find matches for a regexp in all files that belong to the current project (project-find-regexp). When invoked with a prefix argument, this command additionally prompts for the base directory from which to start the search; this allows, for example, to limit the search only to project files under a certain subdirectory of the project root. Даст удобство переходов, но если нужны замены, rgrep + wgrep - лучше.
- в окне результатов
r pattern RET replacement RET
perform interactive query-replace on references that match pattern (xref-query-replace-in-results), replacing the match with replacement. https://www.gnu.org/software/emacs/manual/html_node/emacs/Identifier-Search.html - в целом там работает https://www.gnu.org/software/emacs/manual/html_node/emacs/Xref-Commands.html
- в окне результатов
- M-x project-search
- Interactively search for regexp matches in all files that belong to the current project. В отличие от предыдущего варианта, который собирает результаты в специальное окошко, переходит к каждому найденному мечту. Чтоб продолжить поиск
M-x fileloop-continue RET
- C-x p r
- Perform query-replace for a regexp in all files that belong to the current project (project-query-replace-regexp). Как предыдущее, но замена.
- C-x p d
- предлагает выбрать каталог из существующих в проекте, там запускает dired.
- C-x p D
- Run Dired in the current project’s root directory (project-dired).
- C-x p v
- Run vc-dir in the current project’s root directory (project-vc-dir).
- C-x p s
- Start an inferior shell in the current project’s root directory (project-shell).
- C-x p e
- Start Eshell in the current project’s root directory (project-eshell).
- C-x p c
- Run compilation in the current project’s root directory (project-compile).
- C-x p !
- Run shell command in the current project’s root directory (project-shell-command).
- C-x p &
- Run shell command asynchronously in the current project’s root directory (project-async-shell-command).
Ссылки
- https://www.gnu.org/software/emacs/manual/html_node/emacs/Projects.html
- https://github.com/muffinmad/emacs-find-file-rg - искать файлы в проекте с помощью ripgrep, т.е. с учётом всех игноров. Есть в melpa.
- https://github.com/Ergus/gtags-mode - GNU Global integration with xref, project and imenu. Но у оного global, пишуть, supported languages are C, C++, yacc and Java, что не мой случай.
- https://github.com/muffinmad/emacs-ibuffer-project
- (есть аналогичный постарше для проджектайла - https://github.com/purcell/ibuffer-projectile)
- https://github.com/jcs-elpa/isearch-project - поиск как С-s по всему проекту, а не по одному файлу.
- https://codeberg.org/ideasman42/emacs-bookmark-in-project
- https://www.manueluberti.eu//emacs/2020/11/14/extending-project/ - к project способ задать проект своими силами
Все посты