(Emacs/config)+Custom function to generate tags from project root

This commit is contained in:
2024-05-11 13:45:20 +05:30
parent 5567f2647d
commit eacfab80dd
2 changed files with 36 additions and 0 deletions

View File

@@ -1107,6 +1107,41 @@ setups for programming without heavier packages like [[*Eglot][Eglot]].
"g" #'xref-revert-buffer
"q" #'quit-window))
#+end_src
** Project.el
An inbuilt solution for creating and managing projects that doesn't
require a dependency. Where possible we should try to use Emacs
defaults (admittedly this is a philosophy I've only recently adopted)
so when setting up a new computer it takes a bit less time.
Here I write a TAGS command, mimicking projectile's one, so I can
quickly generate them in C/C++ projects.
#+begin_src emacs-lisp
(use-package project
:straight nil
:general
(general-def
:keymaps 'project-prefix-map
"R" #'+project/generate-tags)
:config
(defun +project/generate-tags ()
(interactive)
(let ((project (project-current)))
(if (not project)
(message "+project/generate-tags: Not in project.")
(let ((tags-file (concat (project-root project) "TAGS"))
(files (format "%s" (project-files project))))
(set-process-sentinel
(start-process-shell-command
"PROJECT-GENERATE-TAGS"
"*gen-tags*"
(format "ctags -Re -f %s %s"
tags-file
(substring files 1 (- (length files) 1))))
(lambda (p event)
(when (string= event "finished\n")
(message "Finished generating tags!")))))))))
#+end_src
** WAIT Projectile
:PROPERTIES:
:header-args:emacs-lisp: :tangle no

View File

@@ -783,6 +783,7 @@ for all snippets I've got.
:defer t
:hook
(prog-mode-hook . yas-minor-mode)
(text-mode-hook . yas-minor-mode)
:general
(insert-leader
"i" #'yas-insert-snippet)