#+begin_src emacs-lisp
(setq modus-themes-slanted-constructs t
modus-themes-bold-constructs t
- modus-themes-org-blocks 'rainbow
+ modus-themes-org-blocks 'grayscale
modus-themes-mode-line '3d
modus-themes-scale-headings t
modus-themes-region 'no-extend
(ligature-set-ligatures
'(prog-mode text-mode)
'("-|" "-~" "---" "-<<" "-<" "--" "->" "->>" "-->" "///" "/=" "/=="
- "/>" "//" "/*" "*>" "***" "*/" "<-" "<<-" "<=>" "<=" "<|" "<||"
+ "/>" "//" "/*" "*>" "*/" "<-" "<<-" "<=>" "<=" "<|" "<||"
"<|||" "<|>" "<:" "<>" "<-<" "<<<" "<==" "<<=" "<=<" "<==>" "<-|"
"<<" "<~>" "<=|" "<~~" "<~" "<$>" "<$" "<+>" "<+" "</>" "</" "<*"
"<*>" "<->" "<!--" ":>" ":<" ":::" "::" ":?" ":?>" ":=" "::=" "=>>"
:config (evil-goggles-mode)
(evil-goggles-use-diff-faces))
#+end_src
-** Highlight "TODO" comments
+** Highlight TODOs in comments
#+begin_src emacs-lisp
(use-package hl-todo
:straight (hl-todo :type git :host github :repo "tarsius/hl-todo")
- :config (global-hl-todo-mode))
+ :config (global-hl-todo-mode 1))
#+end_src
** Don't lose cursor
#+begin_src emacs-lisp
:custom (evilnc-invert-comment-line-by-line nil))
#+end_src
** Undo tree
-Fix the oopsies!
+Fix the oopsies! Maybe replace with undo-fu or Emacs 28 built in undo-redo.
#+begin_src emacs-lisp
(use-package undo-tree
:custom
:custom
(org-ellipsis " ▾")
(org-agenda-start-with-log-mode t)
+ (org-agenda-files (quote ("~/Org/tasks.org" "~/Org/break.org")))
(org-log-done 'time)
(org-log-into-drawer t)
(org-src-tab-acts-natively t)
(org-src-fontify-natively t)
(org-startup-indented t)
(org-hide-emphasis-markers t)
- (org-fontify-whole-block-delimiter-line nil))
+ (org-fontify-whole-block-delimiter-line nil)
+ :bind ("C-c a" . org-agenda))
#+end_src
** Tempo
#+begin_src emacs-lisp
:map ivy-minibuffer-map
("TAB" . ivy-alt-done)
:map ivy-switch-buffer-map
- ("C-d" . ivy-switch-buffer-kill))
+ ("M-d" . ivy-switch-buffer-kill))
:config (ivy-mode))
#+end_src
** Ivy-rich
Another file has more specific network configuration.
#+begin_src emacs-lisp
(use-package circe
- :config
- (load "~/.emacs.d/irc.el"))
- (use-package circe-color-nicks
- :after circe
- :straight (:type built-in))
+ :config (load-file "~/.emacs.d/irc.el"))
+
(use-package circe-chanop
- :after circe
- :straight (:type built-in))
+ :straight (:type built-in)
+ :after circe)
+
+ (use-package circe-color-nicks
+ :straight (:type built-in)
+ :after circe)
#+end_src
** Default browser
Set EWW as default browser except for videos.
("." . eww-browse-url)
)))
#+end_src
+** EWW
+Some EWW enhancements.
+*** Give buffer a useful name
+#+begin_src emacs-lisp
+ ;; From https://protesilaos.com/dotemacs/
+ (defun prot-eww--rename-buffer ()
+ "Rename EWW buffer using page title or URL.
+ To be used by `eww-after-render-hook'."
+ (let ((name (if (eq "" (plist-get eww-data :title))
+ (plist-get eww-data :url)
+ (plist-get eww-data :title))))
+ (rename-buffer (format "*%s # eww*" name) t)))
+
+ (add-hook 'eww-after-render-hook #'prot-eww--rename-buffer)
+#+end_src
+*** Better entrypoint
+#+begin_src emacs-lisp
+ ;; From https://protesilaos.com/dotemacs/
+ (defun prot-eww-browse-dwim (url &optional arg)
+ "Visit a URL, maybe from `eww-prompt-history', with completion.
+
+ With optional prefix ARG (\\[universal-argument]) open URL in a
+ new eww buffer.
+
+ If URL does not look like a valid link, run a web query using
+ `eww-search-prefix'.
+
+ When called from an eww buffer, provide the current link as
+ initial input."
+ (interactive
+ (list
+ (completing-read "Query:" eww-prompt-history
+ nil nil (plist-get eww-data :url) 'eww-prompt-history)
+ current-prefix-arg))
+ (eww url (if arg 4 nil)))
+
+ (global-set-key (kbd "C-c w") 'prot-eww-browse-dwim)
+#+end_src
** Emacs Anywhere
Use Emacs globally. Use the Emacs daemon and bind a key in your wm to
"emacsclient --eval "(emacs-everywhere)".
#+end_src
** Git
*** Magit
+# TODO: Write a command that commits hunk, skipping staging step.
#+begin_src emacs-lisp
- (use-package magit
- :hook (git-commit-setup-hook . pinentry-start))
+ (use-package magit)
#+end_src
*** Colored diff in line number area
#+begin_src emacs-lisp
(setq save-abbrevs 'silent)
(setq-default abbrev-mode t)
#+end_src
+** TRAMP
+#+begin_src emacs-lisp
+ (setq tramp-default-method "ssh")
+#+end_src
* Functions
** Easily convert splits
Converts splits from horizontal to vertical and vice versa. Lifted from EmacsWiki.
** GPG
#+begin_src emacs-lisp
(use-package epa-file
- :straight (:type built-in))
- (setq epa-file-select-keys nil
- epa-file-encrypt-to '("me@armaanb.net")
- password-cache-expiry (* 60 15))
+ :straight (:type built-in)
+ :custom
+ (epa-file-select-keys nil)
+ (epa-file-encrypt-to '("me@armaanb.net"))
+ (password-cache-expiry (* 60 15)))
- (use-package pinentry)
+ (use-package pinentry
+ :config (pinentry-start))
#+end_src
** Pastebin
#+begin_src emacs-lisp
program[k] = xdotool keyup k key --clearmodifiers Up
program[l] = xdotool keyup l key --clearmodifiers Right
- bind[h] = MOD + Control + h
- bind[j] = MOD + Control + j
- bind[k] = MOD + Control + k
- bind[l] = MOD + Control + l
+ bind[h] = Mod1 + Tab + h
+ bind[j] = Mod1 + Tab + j
+ bind[k] = Mod1 + Tab + k
+ bind[l] = Mod1 + Tab + l
#+end_src
**** Programs
#+begin_src conf :tangle ~/.spectrwm.conf
bind[aerc] = MOD+Control+s
bind[weechat] = MOD+Control+d
- bind[emacs] = MOD+Control+f
- bind[emacs-anywhere] = MOD+f
+ bind[emacs] = MOD+Control+Return
+ bind[emacs-anywhere] = MOD+Control+f
bind[firefox] = MOD+Control+u
bind[thunderbird] = MOD+Control+i
bind[slack] = MOD+Control+o
#+begin_src shell :tangle ~/.config/zsh/zshrc
alias aps='yay -Ss'
alias api='yay -Syu'
+ alias apii='sudo pacman -S'
alias app='yay -Rns'
alias apc='yay -Sc'
alias apo='yay -Qttd'
alias favorites='pacman -Qe | cut -d " " -f 1 > ~/Documents/favorites'
alias ufetch='ufetch-arch'
alias reflect='reflector --verbose --sort rate --save \
- ~/.local/etc/pacman.d/mirrorlist --download-timeout 60' # Takes ~45m to run
+ ~/.local/etc/pacman.d/mirrorlist --download-timeout 60' # Takes ~45m to run
#+end_src
*** Exports
#+begin_src shell :tangle ~/.config/zsh/zshrc
#+end_src
** Git
*** User
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
[user]
name = Armaan Bhojwani
email = me@armaanb.net
signingkey = 0FEB9471E19C49C60CFBEB133C9ED82FFE788E4A
#+end_src
*** Init
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
[init]
defaultBranch = main
#+end_src
*** GPG
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
[gpg]
program = gpg
#+end_src
*** Sendemail
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
[sendemail]
smtpserver = smtp.mailbox.org
smtpuser = me@armaanb.net
confirm = auto
#+end_src
*** Submodules
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
[submodule]
recurse = true
#+end_src
*** Aliases
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
[alias]
stat = diff --stat
sclone = clone --depth 1
mirror = git config --global alias.mirrormirror
#+end_src
*** Commits
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
[commit]
gpgsign = true
#+end_src