]> git.armaanb.net Git - config.org.git/blobdiff - config.org
Change launch keybindings for Emacs
[config.org.git] / config.org
index 149d3c075bb3a890b353df357abf3470e324ea38..81cdc8cb52f297db6d14873a1f377c77c8914109 100644 (file)
@@ -48,7 +48,7 @@ Its fine to set this here because I run Emacs in daemon mode, but if I were not,
 #+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
@@ -69,7 +69,7 @@ Great programming font with ligatures.
     (ligature-set-ligatures
      '(prog-mode text-mode)
      '("-|" "-~" "---" "-<<" "-<" "--" "->" "->>" "-->" "///" "/=" "/=="
-       "/>" "//" "/*" "*>" "***" "*/" "<-" "<<-" "<=>" "<=" "<|" "<||"
+       "/>" "//" "/*" "*>" "*/" "<-" "<<-" "<=>" "<=" "<|" "<||"
        "<|||" "<|>" "<:" "<>" "<-<" "<<<" "<==" "<<=" "<=<" "<==>" "<-|"
        "<<" "<~>" "<=|" "<~~" "<~" "<$>" "<$" "<+>" "<+" "</>" "</" "<*"
        "<*>" "<->" "<!--" ":>" ":<" ":::" "::" ":?" ":?>" ":=" "::=" "=>>"
@@ -148,11 +148,11 @@ Highlight when changes are made.
     :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
@@ -220,7 +220,7 @@ tpope prevails!
     :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
@@ -269,19 +269,15 @@ Add back C-a/C-x
     :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))
-#+end_src
-** Automatically tangle
-#+begin_src emacs-lisp
-  (add-hook 'org-mode-hook
-            (lambda () (add-hook 'after-save-hook #'org-babel-tangle
-                                 :append :local)))
+    (org-fontify-whole-block-delimiter-line nil)
+    :bind ("C-c a" . org-agenda))
 #+end_src
 ** Tempo
 #+begin_src emacs-lisp
@@ -308,7 +304,7 @@ Simple, but not too simple autocompletion.
            :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
@@ -372,7 +368,6 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
     :load-path "/usr/share/emacs/site-lisp/mu4e"
     :bind (("C-c m" . mu4e))
     :config
-
     (setq user-full-name "Armaan Bhojwani"
           smtpmail-local-domain "armaanb.net"
           smtpmail-stream-type 'ssl
@@ -416,12 +411,10 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
                        (smtpmail-smtp-server "smtp.mailbox.org")
                        (mu4e-drafts-folder . "/school/Drafts")
                        (mu4e-trash-folder . "/school/Trash")))))
-
     (add-to-list 'mu4e-bookmarks
-                 '(
-                   :name  "Unified inbox"
-                   :query "maildir:\"/personal/INBOX\" or maildir:\"/school/INBOX\""
-                   :key   ?b)))
+                 '(:name "Unified inbox"
+                         :query "maildir:\"/personal/INBOX\" or maildir:\"/school/INBOX\""
+                         :key ?b)))
 #+end_src
 ** Calendar
 #+begin_src emacs-lisp
@@ -446,26 +439,66 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
 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
+Set EWW as default browser except for videos.
 #+begin_src emacs-lisp
   (defun browse-url-mpv (url &optional new-window)
     "Open URL in MPV."
     (start-process "mpv" "*mpv*" "mpv" url))
 
-  (setq browse-url-browser-function
+  (setq browse-url-handlers
         (quote
          (("youtu\\.?be" . browse-url-mpv)
-          ("." . eww-browse-url))))
+          ("." . 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
@@ -580,14 +613,16 @@ Company-box adds icons.
 #+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
   (use-package diff-hl
     :straight (diff-hl :type git :host github :repo "dgutov/diff-hl")
+    :hook ((magit-pre-refresh-hook . diff-hl-magit-pre-refresh)
+           (magit-post-refresh-hook . diff-hl-magit-post-refresh))
     :config (global-diff-hl-mode))
 #+end_src
 * General text editing
@@ -641,6 +676,10 @@ Abbreviate things!
   (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.
@@ -730,12 +769,14 @@ No more clogging up init.el.
 ** 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
@@ -766,7 +807,9 @@ Gruvbox colors
   color_focus = rgb:83/a5/98
   color_focus_maximized = rgb:d6/5d/0e
   color_unfocus = rgb:58/58/58
-
+#+end_src
+*** Bar
+#+begin_src conf :tangle ~/.spectrwm.conf
   bar_enabled = 0
   bar_font = xos4 Fira Code:pixelsize=14:antialias=true # any installed font
 #+end_src
@@ -810,10 +853,10 @@ Gruvbox colors
   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
@@ -827,8 +870,8 @@ Gruvbox colors
 
   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
@@ -1114,6 +1157,7 @@ I manage plugins using my own plugin manager, ZPE. https://git.sr.ht/~armaan/zpe
 #+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'
@@ -1121,7 +1165,7 @@ I manage plugins using my own plugin manager, ZPE. https://git.sr.ht/~armaan/zpe
   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
@@ -1406,24 +1450,24 @@ https://github.com/sharkdp/vivid
 #+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
@@ -1432,12 +1476,12 @@ https://github.com/sharkdp/vivid
   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
@@ -1451,7 +1495,7 @@ https://github.com/sharkdp/vivid
   mirror = git config --global alias.mirrormirror
 #+end_src
 *** Commits
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
 [commit]
   gpgsign = true
 #+end_src