Add a bunch of project management stuff

This commit is contained in:
Alexander Rosenberg 2023-09-30 21:20:31 -07:00
parent 31589bab6e
commit ef970dc06e
Signed by: Zander671
GPG Key ID: 5FD0394ADBD72730

55
init.el
View File

@ -111,15 +111,25 @@
'((c-mode . c-ts-mode)
(c++-mode . c++-ts-mode)
(c-or-c++-mode . c-or-c++-ts-mode)
(objc-mode . objc-ts-mode)
(java-mode . java-ts-mode)
(rust-mode . rust-ts-mode)
(json-mode . json-ts-mode))))
;; c-ts-mode
(use-package c-ts-mode
:after evil
:init
(setq-default c-ts-mode-indent-offset 4))
(setq-default c-ts-mode-indent-offset 4)
:config
(evil-define-key 'normal 'c-ts-mode-map
"go" #'ff-find-other-file
"gO" #'ff-find-other-file-other-window)
(evil-define-key 'normal 'c++-ts-mode-map
"go" #'ff-find-other-file
"gO" #'ff-find-other-file-other-window)
(evil-define-key 'normal 'objc-mode-map
"go" #'ff-find-other-file
"gO" #'ff-find-other-file-other-window))
;; recentf
(use-package recentf
@ -383,6 +393,45 @@ visual states."
(advice-add 'eglot-completion-at-point :around #'cape-wrap-buster)
(setq eglot-autoshutdown t))
;; project.el
(use-package project
:bind (:map project-prefix-map
("s" . my/project-vterm))
:init
(defvar my/project-vterm-hash-table (make-hash-table :test 'equal)
"Hash table that maps project root dirs to vterm buffers.")
(defun my/project-vterm ()
"Switch to or create a vterm buffer in the current projects root."
(interactive)
(if-let ((proj (project-current t))
(default-directory (project-root proj)))
(if-let ((vterm-buff (gethash default-directory
my/project-vterm-hash-table))
((buffer-live-p vterm-buff)))
(switch-to-buffer vterm-buff)
(puthash default-directory
(vterm (concat "*vterm for project " default-directory "*"))
my/project-vterm-hash-table))))
(defvar my/project-run-command nil
"Command to run with `my/project-run'.")
(defvar my/-project-run-history '()
"Commands previously run with `my/project-run'")
(defun my/project-run (command comint)
"Like `project-compile', but for running a project.
COMMAND and COMINT are like `compile'."
(interactive (list (or my/project-run-command
(read-shell-command "Run Command: "
(car my/-project-run-history)
'(my/-project-run-history . 1)))
(consp current-prefix-arg)))
(let* ((proj (project-current nil))
(default-directory (if proj (project-root proj) default-directory))
(compilation-buffer-name-function (lambda (_)
(progn "*run project*")))
(compilation-directory default-directory)
(compile-history nil))
(compile command comint))))
;; rust
(use-package rust-mode)
@ -567,7 +616,9 @@ visual states."
dashboard-display-icons-p t
dashboard-icon-type 'nerd-icons
dashboard-set-file-icons t
dashboard-projects-backend 'project-el
dashboard-items '((recents . 5)
(projects . 5)
(bookmarks . 5))))
;;; init.el ends here