(Emacs/config)+Custom function to generate tags from project root
This commit is contained in:
@@ -1107,6 +1107,41 @@ setups for programming without heavier packages like [[*Eglot][Eglot]].
|
|||||||
"g" #'xref-revert-buffer
|
"g" #'xref-revert-buffer
|
||||||
"q" #'quit-window))
|
"q" #'quit-window))
|
||||||
#+end_src
|
#+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
|
** WAIT Projectile
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:emacs-lisp: :tangle no
|
:header-args:emacs-lisp: :tangle no
|
||||||
|
|||||||
@@ -783,6 +783,7 @@ for all snippets I've got.
|
|||||||
:defer t
|
:defer t
|
||||||
:hook
|
:hook
|
||||||
(prog-mode-hook . yas-minor-mode)
|
(prog-mode-hook . yas-minor-mode)
|
||||||
|
(text-mode-hook . yas-minor-mode)
|
||||||
:general
|
:general
|
||||||
(insert-leader
|
(insert-leader
|
||||||
"i" #'yas-insert-snippet)
|
"i" #'yas-insert-snippet)
|
||||||
|
|||||||
Reference in New Issue
Block a user