From e2e4fab5a870352943bd331b046e598a0c4beb2c Mon Sep 17 00:00:00 2001 From: Evie Litherland-Smith Date: Fri, 23 Feb 2024 11:45:34 +0000 Subject: [PATCH] Add some binds to quickly open projects as well as buffers --- config/buffers.org | 84 +++++++++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 31 deletions(-) diff --git a/config/buffers.org b/config/buffers.org index e1ca59e..08f700c 100644 --- a/config/buffers.org +++ b/config/buffers.org @@ -14,7 +14,7 @@ #+begin_src emacs-lisp ;; Config file shortcut (defun my/open-init-file () - "Open emacs init file" + "Open emacs init file." (interactive) (find-file (locate-user-emacs-file "init.el"))) (keymap-global-set "C-c w c" #'my/open-init-file) @@ -23,7 +23,7 @@ #+begin_src emacs-lisp ;; NixOS flake shortcut (defun my/open-nixos-flake () - "Open NixOS system config flake" + "Open NixOS system config flake." (interactive) (let ((flake "/etc/nixos/flake.nix")) (if (file-exists-p flake) @@ -34,43 +34,43 @@ ** Templates file #+begin_src emacs-lisp ;; Tempel template file shortcut - (with-eval-after-load 'tempel - (defun my/open-template-file () - "Open `tempel' template file" - (interactive) - (find-file tempel-path)) - (keymap-global-set "C-c w t" #'my/open-template-file)) + (defun my/open-template-file () + "Open `tempel' template file." + (interactive) + (require 'tempel) + (find-file tempel-path)) + (keymap-global-set "C-c w t" #'my/open-template-file) #+end_src ** Org directory #+begin_src emacs-lisp ;; Org directory shortcut - (with-eval-after-load 'org - (defun my/open-org-directory () - "Open base org-mode directory in dired" - (interactive) - (find-file org-directory)) - (keymap-global-set "C-c w o" #'my/open-org-directory)) + (defun my/open-org-directory () + "Open base org-mode directory in dired." + (interactive) + (require 'org) + (find-file org-directory)) + (keymap-global-set "C-c w o" #'my/open-org-directory) #+end_src ** RSS feeds file #+begin_src emacs-lisp ;; Elfeed feeds file shortcut - (with-eval-after-load 'org - (defun my/open-feeds-file () - "Open org file containing elfeed sources" - (interactive) - (require 'elfeed) - (require 'elfeed-org) - (find-file (expand-file-name "feeds.org" elfeed-base-directory)))) + (defun my/open-feeds-file () + "Open org file containing elfeed sources." + (interactive) + (require 'org) + (require 'elfeed) + (require 'elfeed-org) + (find-file (expand-file-name "feeds.org" elfeed-base-directory))) (keymap-global-set "C-c w f" #'my/open-feeds-file) #+end_src ** Documents and Downloads #+begin_src emacs-lisp (defun my/open-documents-directory () - "Open Documents directory" + "Open Documents directory." (interactive) (find-file "~/Documents/")) (defun my/open-downloads-directory () - "Open Downloads directory" + "Open Downloads directory." (interactive) (find-file "~/Downloads/")) (keymap-global-set "C-c w d" #'my/open-documents-directory) @@ -78,14 +78,36 @@ #+end_src ** Projects directory #+begin_src emacs-lisp - (with-eval-after-load 'magit - (defun my/open-projects-directory () - "Open Projects directory. + (defun my/open-projects-directory () + "Open Projects directory. Try `magit-clone-default-directory' if available, fall back to ~/Projects otherwise." - (interactive) - (find-file (if magit-clone-default-directory - magit-clone-default-directory - "~/Projects/"))) - (keymap-global-set "C-c w p" #'my/open-projects-directory)) + (interactive) + (require 'magit) + (find-file (if magit-clone-default-directory + magit-clone-default-directory + "~/Projects/"))) + (keymap-global-set "C-c w p" #'my/open-projects-directory) +#+end_src +* Common project shortcuts +** NixOS +#+begin_src emacs-lisp + (defun my/open-nixos-project () + "Open NixOS config project." + (interactive) + (require 'project) + (let ((nixos "/etc/nixos/")) + (if (file-directory-p nixos) + (project-switch-project nixos) + (warn (concat nixos " not found"))))) + (keymap-global-set "C-c p n" #'my/open-nixos-project) +#+end_src +** emacs +#+begin_src emacs-lisp + (defun my/open-emacs-project () + "Open Emacs config project." + (interactive) + (require 'project) + (project-switch-project user-emacs-directory)) + (keymap-global-set "C-c p e" #'my/open-emacs-project) #+end_src