Compare commits

...

8 Commits

5 changed files with 87 additions and 101 deletions

View File

@ -59,13 +59,6 @@ focus the new window immediately.
(interactive) (interactive)
(split-window-below) (split-window-below)
(windmove-down)) (windmove-down))
(defun kill-buffer-and-delete-window ()
"Kill the current buffer and delete its window."
(interactive)
(progn
(kill-this-buffer)
(delete-window)))
#+end_src #+end_src
** Resize windows ** Resize windows

View File

@ -120,8 +120,54 @@ I also have two main shell-related functions, prefixed with ~as~.
|-----+-------------+-------------+-------------| |-----+-------------+-------------+-------------|
| | | shells | | | | | shells | |
| e | eshell-new | | | | e | eshell-new | | |
| v | vterm | | vterm | | t | eat | | eat |
| V | multi-vterm | | multi-vterm |
*** Treemacs
#+name: keybindings-treemacs
| Key | Function | Description | Package |
|-----+----------------------------------------+-------------+----------|
| | | treemacs | |
| c | | create | |
| cd | treemacs-create-dir | | treemacs |
| cf | treemacs-create-file | | treemacs |
| ci | treemacs-create-icon | | treemacs |
| ct | treemacs-create-theme | | treemacs |
| cw | treemacs-create-workspace | | treemacs |
| d | treemacs-delete-file | | treemacs |
| f | | files | |
| ff | treemacs-find-file | | treemacs |
| ft | treemacs-find-tag | | treemacs |
| l | | lsp | |
| ls | treemacs-expand-lsp-symbol | | treemacs |
| ld | treemacs-expand-lsp-treemacs-deps | | treemacs |
| lD | treemacs-collapse-lsp-treemacs-deps | | treemacs |
| lS | treemacs-collapse-lsp-symbol | | treemacs |
| p | | projects | |
| pa | treemacs-add-project-to-workspace | | treemacs |
| pf | treemacs-project-follow-mode | | treemacs |
| pn | treemacs-project-of-node | | treemacs |
| pp | treemacs-project-at-point | | treemacs |
| pr | treemacs-remove-project-from-workspace | | treemacs |
| pt | treemacs-move-project-down | | treemacs |
| ps | treemacs-move-project-up | | treemacs |
| r | | rename | |
| rf | treemacs-rename-file | | treemacs |
| rp | treemacs-rename-project | | treemacs |
| rr | treemacs-rename | | treemacs |
| rw | treemacs-rename-workspace | | treemacs |
| t | treemacs | | treemacs |
| T | | toggles | |
| Td | treemacs-toggle-show-dotfiles | | treemacs |
| Tn | treemacs-toggle-node | | treemacs |
| v | | visit node | |
| va | treemacs-visit-node-ace | | treemacs |
| vc | treemacs-visit-node-close-treemacs | | treemacs |
| vn | treemacs-visit-node-default | | treemacs |
| y | | yank | |
| ya | treemacs-copy-absolute-path-at-point | | treemacs |
| yp | treemacs-copy-project-path-at-point | | treemacs |
| yr | treemacs-copy-relative-path-at-point | | treemacs |
| yf | treemacs-copy-file | | treemacs |
*** Treemacs *** Treemacs
#+name: keybindings-treemacs #+name: keybindings-treemacs
@ -181,7 +227,7 @@ My buffer-related keybindings are all prefixed by ~b~.
| c | clone-indirect-buffer | | | | c | clone-indirect-buffer | | |
| C | clone-indirect-buffer-other-window | | | | C | clone-indirect-buffer-other-window | | |
| l | bufler | | bufler | | l | bufler | | bufler |
| d | kill-this-buffer | | | | d | kill-current-buffer | | |
| D | kill-buffer | | | | D | kill-buffer | | |
| h | dashboard-refresh-buffer | | dashboard | | h | dashboard-refresh-buffer | | dashboard |
| m | switch-to-messages-buffer | | | | m | switch-to-messages-buffer | | |
@ -516,7 +562,7 @@ much to say. The prefix here is ~w~.
| 7 | winum-select-window-7 | none | winum | | 7 | winum-select-window-7 | none | winum |
| 8 | winum-select-window-8 | none | winum | | 8 | winum-select-window-8 | none | winum |
| 9 | winum-select-window-9 | none | winum | | 9 | winum-select-window-9 | none | winum |
| b | kill-buffer-and-delete-window | | | | b | kill-buffer-and-window | | |
| d | delete-window | | | | d | delete-window | | |
| o | other-window | | | | o | other-window | | |
| D | delete-other-windows | | | | D | delete-other-windows | | |

View File

@ -395,7 +395,7 @@ configuration for the ~mu4e~ package itself.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package mu4e (use-package mu4e
:after all-the-icons :after all-the-icons
:straight (:build t) :straight (:build nil)
:commands mu4e mu4e-compose-new :commands mu4e mu4e-compose-new
:init :init
(defun mu4e--main-action-str (name func) (defun mu4e--main-action-str (name func)
@ -556,7 +556,7 @@ and how to retrieve them.
#+name: mu4e-mail-on-machine #+name: mu4e-mail-on-machine
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp :tangle no
(setq mu4e-get-mail-command "mbsync -a" (setq mu4e-get-mail-command "mbsync -a"
mu4e-root-maildir "~/Mail" mu4e-root-maildir (concat (getenv "HOME") "/Mail/lucien@phundrak.com/")
mu4e-trash-folder "/Trash" mu4e-trash-folder "/Trash"
mu4e-refile-folder "/Archive" mu4e-refile-folder "/Archive"
mu4e-sent-folder "/Sent" mu4e-sent-folder "/Sent"
@ -791,29 +791,6 @@ With this piece of code, I can simply jump to my inbox maildir with
(:maildir "/Trash" :key ?t))) (:maildir "/Trash" :key ?t)))
#+end_src #+end_src
**** Dealing with spammers
Im sure you have received at least one email recently from a sketchy
email address asking you something that might be completely unrelated
to what you do, or at least somewhat related. Fortunately, [[https://twitter.com/Boris/status/1360208504544444417][we have a
hero]]! Now, let me write a function that will insert their
pre-written text at point to avoid me going back to their Twitter
thread each time I want to shut spammers up.
#+begin_src emacs-lisp
(defun reply-to-bill ()
(interactive)
(insert "Please forward this email to bill@noprocurement.com,
and delete my email, as Ill be changing jobs soon, and this
email address will no longer be active.
Bill Whiskoney is a senior partner at Nordic Procurement
Services, and he handles our budget and will help you further or
introduce you to someone who can."))
#+end_src
If you want the full story, make sure to read the whole thread, I
guarantee it, its worth your time! And in case the Twitter thread
disappear in the future, [[https://threader.app/thread/1360208504544444417][here is a backup]].
**** Getting Fancy **** Getting Fancy
Im not a huge fan of mu4es default icons marking my emails, so Ill Im not a huge fan of mu4es default icons marking my emails, so Ill
redefine them as follows. Be aware the name of these icons are from redefine them as follows. Be aware the name of these icons are from
@ -1561,7 +1538,8 @@ excluded files.
eol) eol)
,(rx "/" ,(rx "/"
(or "rsync" "ssh" "tmp" "yadm" "sudoedit" "sudo") (or "rsync" "ssh" "tmp" "yadm" "sudoedit" "sudo")
(* any))))) (* any))
"/nix/.*")))
#+end_src #+end_src
** Screenshot ** Screenshot
@ -1579,6 +1557,22 @@ look nice.
#+end_src #+end_src
** Shells ** Shells
*** Eat
Eat is a modern shell emulator for Emacs. I use it as a replacement
for VTerm as I never got VTerm to actually work on NixOS.
#+begin_src emacs-lisp
(use-package eat
:defer t
:straight (eat :type git
:host codeberg
:repo "akib/emacs-eat"
:files ("*.el" ("term" "term/*.el") "*.texi"
"*.ti" ("terminfo/e" "terminfo/e/*")
("terminfo/65" "terminfo/65/*")
("integration" "integration/*")
(:exclude ".dir-locals.el" "*-tests.el"))))
#+end_src
*** Shell-pop *** Shell-pop
Shell-pop allows the user to easily call for a new shell in a pop-up Shell-pop allows the user to easily call for a new shell in a pop-up
buffer. buffer.
@ -1588,7 +1582,7 @@ buffer.
:straight (:build t) :straight (:build t)
:custom :custom
(shell-pop-default-directory "/home/phundrak") (shell-pop-default-directory "/home/phundrak")
(shell-pop-shell-type (quote ("eshell" "*eshell*" (lambda () (eshell shell-pop-term-shell))))) (shell-pop-shell-type (quote ("eat" "*eat-pop*" (lambda () (eat)))))
(shell-pop-window-size 30) (shell-pop-window-size 30)
(shell-pop-full-span nil) (shell-pop-full-span nil)
(shell-pop-window-position "bottom") (shell-pop-window-position "bottom")
@ -1597,47 +1591,6 @@ buffer.
(shell-pop-cleanup-buffer-at-process-exit t)) (shell-pop-cleanup-buffer-at-process-exit t))
#+end_src #+end_src
*** VTerm
VTerm gives Emacs access to regular shells with an almost regular
emulator. Be aware you will most likely need to hit ~C-c~ twice to send
an interrupt signal.
#+begin_src emacs-lisp
(use-package vterm
:defer t
:straight (:build t)
:config
(setq vterm-shell "/usr/bin/fish"
vterm-always-compile-module t))
#+end_src
One annoying think with vterm is it only can create one buffer, you
cant have multiple vterm buffers by default. ~multi-vterm~ fixes this
issue.
#+begin_src emacs-lisp
(use-package multi-vterm
:after vterm
:defer t
:straight (:build t)
:general
(phundrak/major-leader-key
:packages '(vterm multi-vterm)
:keymap 'vterm-mode-map
"c" #'multi-vterm
"n" #'multi-vterm-next
"p" #'multi-vterm-prev))
#+end_src
Another really neat package is =eshell-vterm= which allows to use vterm
to run visual commands when in Eshell.
#+begin_src emacs-lisp
(use-package eshell-vterm
:after eshell
:straight (:build t)
:config
(eshell-vterm-mode)
(defalias 'eshell/v 'eshell-exec-visual))
#+end_src
** XWidgets Webkit Browser ** XWidgets Webkit Browser
I used to use the xwidgets webkit browser in order to view or preview I used to use the xwidgets webkit browser in order to view or preview
HTML files from Emacs, but it seems the Cairo background transparency HTML files from Emacs, but it seems the Cairo background transparency

View File

@ -460,6 +460,7 @@ supported natively. I will describe them here.
(use-package tramp (use-package tramp
:straight (tramp :type built-in :build t) :straight (tramp :type built-in :build t)
:config :config
<<tramp-nixos>>
<<tramp-add-yadm>> <<tramp-add-yadm>>
(setopt tramp-ssh-controlmaster-options nil (setopt tramp-ssh-controlmaster-options nil
tramp-verbose 0 tramp-verbose 0
@ -469,6 +470,19 @@ supported natively. I will describe them here.
(cons tramp-file-name-regexp nil))) (cons tramp-file-name-regexp nil)))
#+end_src #+end_src
*** SSHing into NixOS remotes
When using TRAMP to SSH into remote NixOS hosts, the true =$PATH= gets
truncated, rendering some binaries unavailable, such as =git= or =nil= (an
LSP server for the Nix language). To fix that, we simply need to write
the following code.
#+name: tramp-nixos
#+begin_src emacs-lisp :tangle no
(require 'tramp-sh)
(setq tramp-remote-path (append tramp-remote-path
'(tramp-own-remote-path)))
#+end_src
*** Yadm *** Yadm
[[https://yadm.io/][~yadm~]] is a git wrapper made to easily manage your dotfiles. It has [[https://yadm.io/][~yadm~]] is a git wrapper made to easily manage your dotfiles. It has
loads of features I dont use (the main one I like but dont use is loads of features I dont use (the main one I like but dont use is

View File

@ -190,6 +190,7 @@ awesome!
:init :init
(setq lsp-keymap-prefix "C-c l" (setq lsp-keymap-prefix "C-c l"
read-process-output-max (* 3 1024 1024)) read-process-output-max (* 3 1024 1024))
(setenv "LSP_USE_PLISTS" "true")
:hook ((c-mode . lsp-deferred) :hook ((c-mode . lsp-deferred)
(c++-mode . lsp-deferred) (c++-mode . lsp-deferred)
(html-mode . lsp-deferred) (html-mode . lsp-deferred)
@ -892,26 +893,6 @@ configuration for StumpWM]].
:straight (:build t)) :straight (:build t))
#+end_src #+end_src
*** Dart
#+begin_src emacs-lisp
(use-package dart-mode
:straight (:build t)
:defer t
:hook (dart-mode . lsp-deferred)
:mode "\\.dart\\'")
#+end_src
#+begin_src emacs-lisp
(use-package lsp-dart
:straight (:build t)
:defer t
:general
(phundrak/major-leader-key
:keymaps 'dart-mode-map
:packages '(lsp-mode lsp-dart)
"l" '(:keymap lsp-command-map :which-key "lsp")))
#+end_src
*** EmacsLisp *** EmacsLisp
This package displays the functions arglist or variables docstring This package displays the functions arglist or variables docstring
in the echo area at the bottom of the frame. Quite useful indeed. in the echo area at the bottom of the frame. Quite useful indeed.
@ -1283,7 +1264,7 @@ development.
First, Im using =rust-mode= to tell it to use [[https://tree-sitter.github.io/tree-sitter/][tree sitter]]. First, Im using =rust-mode= to tell it to use [[https://tree-sitter.github.io/tree-sitter/][tree sitter]].
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package rust-mode (use-package rust-mode
:straight :straight t
:defer t :defer t
:init :init
(setq rust-mode-treesitter-derive t)) (setq rust-mode-treesitter-derive t))
@ -1303,7 +1284,6 @@ several improvements on top of =rust-mode=.
(defalias 'org-babel-execute:rust #'org-babel-execute:rustic) (defalias 'org-babel-execute:rust #'org-babel-execute:rustic)
(add-to-list 'org-src-lang-modes '("rust" . rustic))) (add-to-list 'org-src-lang-modes '("rust" . rustic)))
(setq rustic-lsp-client 'lsp-mode) (setq rustic-lsp-client 'lsp-mode)
(add-hook 'rustic-mode-hook #'tree-sitter-hl-mode)
:general :general
(general-define-key (general-define-key
:keymaps 'rustic-mode-map :keymaps 'rustic-mode-map