From f2efbcc1731b413c6bc4b092dc54214bae394a0b Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 12 Jan 2022 06:24:28 +0000 Subject: (Emacs)~path -> environment variables, -+dx/newline, +sys-env-cond sys-env-cond allows for a cond like structure for system name checking. This allows for transferable configurations. --- Emacs/.config/emacs/config.org | 110 ++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 61 deletions(-) (limited to 'Emacs/.config/emacs/config.org') diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index 27c77e8..7892171 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -57,17 +57,23 @@ setup the custom-file to exist in the var-directory :config (global-auto-revert-mode 1)) #+end_src -** Path -Setting the path variable cos it can get annoying sometimes +** Environment variables +- Setting the path variable cos it can get annoying sometimes. +- Setting the ssh agent #+begin_src emacs-lisp (use-package env :defer 1 :straight nil :config - (setenv "PATH" - (concat - (expand-file-name "~/.local/bin:") - (getenv "PATH")))) + (setenv + "PATH" ; + (concat + (expand-file-name "~/.local/bin:") + (getenv "PATH"))) + + (setenv + "SSH_AGENT_SOCK" + (shell-command-to-string "echo -n \"${XDG_RUNTIME_DIR}/ssh-agent.socket\""))) #+end_src * Custom Functions These are general custom functions I have defined for various @@ -75,59 +81,27 @@ purposes. These encapsulate functionality that could apply to multiple packages/situations, otherwise I would've defined it in the place it's required. ** Toggle buffer -There are many cases where 'toggling' a buffer is very useful. For -example, toggling a shell to access it quickly and hide it away with -little annoyance. - -This is negligible with a bit of Emacs lisp. However, as stated -earlier, there are /many/ cases where this is useful. Following the -DRY principle means a more abstract function would be better to use -here. - -One may use higher order functions to create an abstract form that -handles toggling, and then the caller can wrap this call in a new -function if they wish to use it in a keybinding. This format or -construct is kinda common (using a higher order function and wrapping -it in an interactive function for use in a binding), so I created a -macro that further wraps this functionality, creating a custom -function for you. - -The macro asks for a function name, a buffer name and the function -necessary to create a buffer with that name. It then generates a -function with the given name that holds the necessary logic to -'toggle' buffers. -#+begin_src emacs-lisp -(defmacro +dx/create-toggle-function (func-name buf-name buf-create) - "Generate a function named func-name that toggles +Like VSCode's toggling feature for just the terminal, but now for +anything I want. +#+begin_src emacs-lisp +(with-eval-after-load "window" + (defmacro +dx/create-toggle-function (func-name buf-name buf-create) + "Generate a function named func-name that toggles the buffer with name buf-name and creation function buf-create." - `(defun ,func-name () - (interactive) - (let* ((buffer (or (get-buffer ,buf-name) (,buf-create))) - (displayed (get-buffer-window buffer))) - (cond (displayed - (select-window displayed) - (delete-window)) - (t - (display-buffer buffer) - (select-window (get-buffer-window buffer))))))) + `(defun ,func-name () + (interactive) + (let* ((buffer (or (get-buffer ,buf-name) (,buf-create))) + (displayed (get-buffer-window buffer))) + (cond (displayed + (select-window displayed) + (delete-window)) + (t + (display-buffer buffer) + (select-window (get-buffer-window buffer)))))))) #+end_src ** Auto-run command after-save-hook -Macro that defines functionality that runs after a buffer save. -Requires a list of conditions (so it doesn't happen FOR ALL saved -buffers) and a function to run if the buffer satisfies the condition. -Then automatically adds it to the ~after-save-hook~. - -On a Luke Smith video on YouTube, I saw a vim feature which I really -liked. He uses it in his DWM videos, but it's essentially an -"autocmd" call that, upon saving a certain file with vim, will run -a shell command (such as =make= or =pdflatex=). - -It's arbitrary to program this functionality in Emacs. This macro -essentially performs the same task. In particular if you use -=start-process-shell-command= in the =to-run= function then you also -get a generated buffer of output from the command, useful for checking -errors and general messages. Better than vim, eh? - +Define a macro that can run a body of functionality on a given set of +files on after-save-hook. #+begin_src emacs-lisp (use-package simple :straight nil @@ -151,6 +125,21 @@ common use of this macro. "For a given list of forms CDR, return a quoted non-argument lambda." `(quote (lambda () ,@CDR))) #+end_src +** sys-name-cond +#+begin_src emacs-lisp +(defmacro +dx/sys-name-cond (&rest pairs) + (let ((current-lisp)) + (while pairs + (let* ((pair (car pairs)) + (name (car pair)) + (body (cdr pair))) + (add-to-list + 'current-lisp + `((string= ,name (system-name)) ,@body)) + (setq pairs (cdr pairs)))) + `(cond + ,@current-lisp))) +#+end_src * Aesthetics Load my custom "personal-theme" theme which is stored in the Emacs lisp folder (look at [[file:elisp/personal-theme.el][this file]]). @@ -169,8 +158,9 @@ Set font size to 125. (use-package faces :straight nil :config - (+dx/env-cond "spiderboy" (set-face-attribute 'default nil :height 150)) - (+dx/env-cond "oldboy" (set-face-attribute 'default nil :height 115))) + (+dx/sys-name-cond + ("spiderboy" (set-face-attribute 'default nil :height 150)) + ("oldboy" (set-face-attribute 'default nil :height 115)))) #+end_src Turn off the startup buffer because I prefer [[Dashboard]], and write into @@ -220,9 +210,7 @@ instead just picking stuff I think is useful. :config (general-def :states '(normal motion) - "SPC" nil - "M-V" #'+dx/newline - "M-v" (proc (interactive) (+dx/newline 1))) + "SPC" nil) (general-create-definer leader :states '(normal motion) -- cgit v1.2.3-13-gbd6f