(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.
This commit is contained in:
2022-01-12 06:24:28 +00:00
parent 056dc5dcc7
commit f2efbcc173

View File

@@ -57,17 +57,23 @@ setup the custom-file to exist in the var-directory
:config :config
(global-auto-revert-mode 1)) (global-auto-revert-mode 1))
#+end_src #+end_src
** Path ** Environment variables
Setting the path variable cos it can get annoying sometimes - Setting the path variable cos it can get annoying sometimes.
- Setting the ssh agent
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package env (use-package env
:defer 1 :defer 1
:straight nil :straight nil
:config :config
(setenv "PATH" (setenv
"PATH" ;
(concat (concat
(expand-file-name "~/.local/bin:") (expand-file-name "~/.local/bin:")
(getenv "PATH")))) (getenv "PATH")))
(setenv
"SSH_AGENT_SOCK"
(shell-command-to-string "echo -n \"${XDG_RUNTIME_DIR}/ssh-agent.socket\"")))
#+end_src #+end_src
* Custom Functions * Custom Functions
These are general custom functions I have defined for various These are general custom functions I have defined for various
@@ -75,28 +81,10 @@ purposes. These encapsulate functionality that could apply to
multiple packages/situations, otherwise I would've defined it in the multiple packages/situations, otherwise I would've defined it in the
place it's required. place it's required.
** Toggle buffer ** Toggle buffer
There are many cases where 'toggling' a buffer is very useful. For Like VSCode's toggling feature for just the terminal, but now for
example, toggling a shell to access it quickly and hide it away with anything I want.
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 #+begin_src emacs-lisp
(with-eval-after-load "window"
(defmacro +dx/create-toggle-function (func-name buf-name buf-create) (defmacro +dx/create-toggle-function (func-name buf-name buf-create)
"Generate a function named func-name that toggles "Generate a function named func-name that toggles
the buffer with name buf-name and creation function buf-create." the buffer with name buf-name and creation function buf-create."
@@ -109,25 +97,11 @@ the buffer with name buf-name and creation function buf-create."
(delete-window)) (delete-window))
(t (t
(display-buffer buffer) (display-buffer buffer)
(select-window (get-buffer-window buffer))))))) (select-window (get-buffer-window buffer))))))))
#+end_src #+end_src
** Auto-run command after-save-hook ** Auto-run command after-save-hook
Macro that defines functionality that runs after a buffer save. Define a macro that can run a body of functionality on a given set of
Requires a list of conditions (so it doesn't happen FOR ALL saved files on after-save-hook.
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?
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package simple (use-package simple
:straight nil :straight nil
@@ -151,6 +125,21 @@ common use of this macro.
"For a given list of forms CDR, return a quoted non-argument lambda." "For a given list of forms CDR, return a quoted non-argument lambda."
`(quote (lambda () ,@CDR))) `(quote (lambda () ,@CDR)))
#+end_src #+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 * Aesthetics
Load my custom "personal-theme" theme which is stored in the Emacs lisp Load my custom "personal-theme" theme which is stored in the Emacs lisp
folder (look at [[file:elisp/personal-theme.el][this file]]). folder (look at [[file:elisp/personal-theme.el][this file]]).
@@ -169,8 +158,9 @@ Set font size to 125.
(use-package faces (use-package faces
:straight nil :straight nil
:config :config
(+dx/env-cond "spiderboy" (set-face-attribute 'default nil :height 150)) (+dx/sys-name-cond
(+dx/env-cond "oldboy" (set-face-attribute 'default nil :height 115))) ("spiderboy" (set-face-attribute 'default nil :height 150))
("oldboy" (set-face-attribute 'default nil :height 115))))
#+end_src #+end_src
Turn off the startup buffer because I prefer [[Dashboard]], and write into 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 :config
(general-def (general-def
:states '(normal motion) :states '(normal motion)
"SPC" nil "SPC" nil)
"M-V" #'+dx/newline
"M-v" (proc (interactive) (+dx/newline 1)))
(general-create-definer leader (general-create-definer leader
:states '(normal motion) :states '(normal motion)