]> git.armaanb.net Git - config.org.git/blobdiff - config.org
xmodmap: add config
[config.org.git] / config.org
index 7cda77f377082886ab477b5bc2f9c3f6e7402e2b..fd1033e514a7e744f792d9312e43855aa4ac5a95 100644 (file)
@@ -13,9 +13,6 @@ I chose to create a powerful, yet not overly heavy Emacs configuration. Things l
 Another important choice has been to integrate Emacs into a large part of my computing environment (see [[*Emacs OS]]). I use email, IRC, RSS, et cetera, all through Emacs which simplifies my workflow and creates an amazingly integrated environment.
 
 Lastly, I use Evil mode. Modal keybindings are simpler and more ergonomic than standard Emacs style, and Vim keybindings are what I'm comfortable with and are pervasive throughout computing.
 Another important choice has been to integrate Emacs into a large part of my computing environment (see [[*Emacs OS]]). I use email, IRC, RSS, et cetera, all through Emacs which simplifies my workflow and creates an amazingly integrated environment.
 
 Lastly, I use Evil mode. Modal keybindings are simpler and more ergonomic than standard Emacs style, and Vim keybindings are what I'm comfortable with and are pervasive throughout computing.
-** TODOs
-*** TODO Turn keybinding and hook declarations into use-package declarations where possible
-*** TODO Include offlineimap config
 ** License
 Released under the [[https://opensource.org/licenses/MIT][MIT license]] by Armaan Bhojwani, 2021. Note that many snippets are taken from online, and other sources, who are credited for their work near their contributions.
 * Package management
 ** License
 Released under the [[https://opensource.org/licenses/MIT][MIT license]] by Armaan Bhojwani, 2021. Note that many snippets are taken from online, and other sources, who are credited for their work near their contributions.
 * Package management
@@ -131,14 +128,19 @@ Show a ruler at a certain number of chars depending on mode.
   (blink-cursor-mode)
 #+end_src
 ** Visual line mode
   (blink-cursor-mode)
 #+end_src
 ** Visual line mode
-Soft wrap words and do operations by visual lines except in programming modes.
+Soft wrap words and do operations by visual lines in some modes.
 #+begin_src emacs-lisp
 #+begin_src emacs-lisp
-  (global-visual-line-mode 1)
-  (dolist (hook '(prog-mode-hook
-                  calc-trail-mode-hook
-                  org-agenda-mode-hook
-                  mu4e-headers-mode-hook))
-    (add-hook hook (lambda () (visual-line-mode -1))))
+  (dolist (hook '(text-mode-hook
+                  org-mode-hook
+                  markdown-mode-hook
+                  mu4e-view-mode-hook))
+    (add-hook hook (lambda () (visual-line-mode 1))))
+#+end_src
+** Auto fill mode
+#+begin_src emacs-lisp
+  (dolist (hook '(scdoc-mode-hook
+                  mu4e-compose-mode-hook))
+    (add-hook hook (lambda () (auto-fill-mode 1))))
 #+end_src
 ** Display number of matches in search
 #+begin_src emacs-lisp
 #+end_src
 ** Display number of matches in search
 #+begin_src emacs-lisp
@@ -148,6 +150,7 @@ Soft wrap words and do operations by visual lines except in programming modes.
     ([remap query-replace] . anzu-query-replace)
     ([remap query-replace-regexp] . anzu-query-replace-regexp))
 #+end_src
     ([remap query-replace] . anzu-query-replace)
     ([remap query-replace-regexp] . anzu-query-replace-regexp))
 #+end_src
+*** TODO This config doesn't work right
 ** Visual bell
 Invert modeline color instead of audible bell or the standard visual bell.
 #+begin_src emacs-lisp
 ** Visual bell
 Invert modeline color instead of audible bell or the standard visual bell.
 #+begin_src emacs-lisp
@@ -260,7 +263,8 @@ Define templates for lots of common structure elements. Mostly just used within
                         ("xr" . "src conf :tangle ~/.Xresources")
                         ("tm" . "src conf :tangle ~/.tmux.conf")
                         ("gp" . "src conf :tangle ~/.gnupg/gpg.conf")
                         ("xr" . "src conf :tangle ~/.Xresources")
                         ("tm" . "src conf :tangle ~/.tmux.conf")
                         ("gp" . "src conf :tangle ~/.gnupg/gpg.conf")
-                        ("ag" . "src conf :tangle ~/.gnupg/gpg-agent.conf")))
+                        ("ag" . "src conf :tangle ~/.gnupg/gpg-agent.conf")
+                        ("xm" . "src conf :tangle ~/.config/xmodmap")))
       (add-to-list 'org-structure-template-alist addition)))
 #+end_src
 * Autocompletion
       (add-to-list 'org-structure-template-alist addition)))
 #+end_src
 * Autocompletion
@@ -268,6 +272,10 @@ Define templates for lots of common structure elements. Mostly just used within
 A well balanced completion framework.
 #+begin_src emacs-lisp
   (use-package ivy
 A well balanced completion framework.
 #+begin_src emacs-lisp
   (use-package ivy
+    :bind (:map ivy-minibuffer-map
+           ("TAB" . ivy-alt-done))
+           (:map ivy-switch-buffer-map
+           ("M-d" . ivy-switch-buffer-kill))
     :config (ivy-mode))
 #+end_src
 ** Ivy-rich
     :config (ivy-mode))
 #+end_src
 ** Ivy-rich
@@ -280,6 +288,7 @@ A well balanced completion framework.
 Ivy everywhere.
 #+begin_src emacs-lisp
   (use-package counsel
 Ivy everywhere.
 #+begin_src emacs-lisp
   (use-package counsel
+    :bind ("C-M-j" . 'counsel-switch-buffer)
     :config (counsel-mode))
 #+end_src
 ** Remember frequent commands
     :config (counsel-mode))
 #+end_src
 ** Remember frequent commands
@@ -296,23 +305,17 @@ Use elfeed for reading RSS. I have another file with all the feeds in it that I'
 #+begin_src emacs-lisp
   (use-package elfeed
     :bind (("C-c e" . elfeed))
 #+begin_src emacs-lisp
   (use-package elfeed
     :bind (("C-c e" . elfeed))
-    :config
-    (load "~/.emacs.d/feeds.el")
-    (add-hook 'elfeed-new-entry-hook
-              (elfeed-make-tagger :feed-url "youtube\\.com"
-                                  :add '(youtube)))
+    :config (load "~/.emacs.d/feeds.el")
     :bind (:map elfeed-search-mode-map ("C-c C-o" . 'elfeed-show-visit)))
     :bind (:map elfeed-search-mode-map ("C-c C-o" . 'elfeed-show-visit)))
-
-  (use-package elfeed-goodies
-    :after elfeed
-    :config (elfeed-goodies/setup))
 #+end_src
 ** Email
 Use mu4e for reading emails.
 #+end_src
 ** Email
 Use mu4e for reading emails.
-
-I use `offlineimap` to sync my maildirs. It is slower than mbsync, but is fast enough for me, especially when ran with the =-q= option.
-
 Contexts are a not very well known feature of mu4e that makes it super easy to manage multiple accounts. Much better than some of the hacky methods and external packages that I've seen.
 Contexts are a not very well known feature of mu4e that makes it super easy to manage multiple accounts. Much better than some of the hacky methods and external packages that I've seen.
+*** TODO Switch to mbsync
+=offlineimap= really crappy (slow and requires python2), and I need to replace it with =mbsync=.
+*** TODO Include mbsync/offlineimap config
+*** TODO Split up and document this config a bit
+*** Setup
 #+begin_src emacs-lisp
   (use-package smtpmail
     :straight (:type built-in))
 #+begin_src emacs-lisp
   (use-package smtpmail
     :straight (:type built-in))
@@ -333,7 +336,7 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
           mu4e-confirm-quit nil
           mu4e-view-use-gnus t
           mail-user-agent 'mu4e-user-agent
           mu4e-confirm-quit nil
           mu4e-view-use-gnus t
           mail-user-agent 'mu4e-user-agent
-          mail-context-policy 'pick-first
+          mu4e-context-policy 'pick-first
           mu4e-contexts
           `( ,(make-mu4e-context
                :name "school"
           mu4e-contexts
           `( ,(make-mu4e-context
                :name "school"
@@ -371,12 +374,10 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
                          :query "maildir:\"/personal/INBOX\" or maildir:\"/school/INBOX\""
                          :key ?b))
     :hook ((mu4e-compose-mode . flyspell-mode)
                          :query "maildir:\"/personal/INBOX\" or maildir:\"/school/INBOX\""
                          :key ?b))
     :hook ((mu4e-compose-mode . flyspell-mode)
-           (mu4e-compose-mode . auto-fill-mode)
-           (mu4e-view-mode-hook . turn-on-visual-line-mode)
            (message-send-hook . (lambda () (unless (yes-or-no-p "Ya sure 'bout that?")
                                              (signal 'quit nil))))))
 #+end_src
            (message-send-hook . (lambda () (unless (yes-or-no-p "Ya sure 'bout that?")
                                              (signal 'quit nil))))))
 #+end_src
-Discourage Gnus from displaying HTML emails
+*** Discourage Gnus from displaying HTML emails
 #+begin_src emacs-lisp
   (with-eval-after-load "mm-decode"
     (add-to-list 'mm-discouraged-alternatives "text/html")
 #+begin_src emacs-lisp
   (with-eval-after-load "mm-decode"
     (add-to-list 'mm-discouraged-alternatives "text/html")
@@ -386,7 +387,7 @@ Discourage Gnus from displaying HTML emails
 Set EWW as default browser except for multimedia which should open in MPV.
 #+begin_src emacs-lisp
   (defun browse-url-mpv (url &optional new-window)
 Set EWW as default browser except for multimedia which should open in MPV.
 #+begin_src emacs-lisp
   (defun browse-url-mpv (url &optional new-window)
-    "Open URL in MPV."
+    "Ask MPV to load URL."
     (interactive)
     (start-process "mpv" "*mpv*" "mpv" url))
 
     (interactive)
     (start-process "mpv" "*mpv*" "mpv" url))
 
@@ -479,7 +480,8 @@ Circe is a really nice IRC client that claims to be above RCIRC and below ERC in
     (interactive)
     (if (get-buffer "irc.armaanb.net:6696")
         (switch-to-buffer "irc.armaanb.net:6696")
     (interactive)
     (if (get-buffer "irc.armaanb.net:6696")
         (switch-to-buffer "irc.armaanb.net:6696")
-      (progn (circe "libera")
+      (progn (switch-to-buffer "*scratch*")
+             (circe "libera")
              (circe "oftc")
              (circe "tilde"))))
 
              (circe "oftc")
              (circe "tilde"))))
 
@@ -588,7 +590,6 @@ The best file manager!
 #+end_src
 ** Git
 *** Magit
 #+end_src
 ** Git
 *** Magit
-**** TODO Write a command that commits hunk, skipping staging step.
 A very good Git interface.
 #+begin_src emacs-lisp
   (use-package magit)
 A very good Git interface.
 #+begin_src emacs-lisp
   (use-package magit)
@@ -610,7 +611,9 @@ Automatically indent after every change. I'm not sure how much I like this. It s
 ** Spell checking
 Spell check in text mode, and in prog-mode comments.
 #+begin_src emacs-lisp
 ** Spell checking
 Spell check in text mode, and in prog-mode comments.
 #+begin_src emacs-lisp
-  (dolist (hook '(text-mode-hook))
+  (dolist (hook '(text-mode-hook
+                  markdown-mode-hook
+                  scdoc-mode-hook))
     (add-hook hook (lambda () (flyspell-mode))))
   (dolist (hook '(change-log-mode-hook log-edit-mode-hook))
     (add-hook hook (lambda () (flyspell-mode -1))))
     (add-hook hook (lambda () (flyspell-mode))))
   (dolist (hook '(change-log-mode-hook log-edit-mode-hook))
     (add-hook hook (lambda () (flyspell-mode -1))))
@@ -669,6 +672,13 @@ Abbreviate things! I just use this for things like my email address and copyrigh
 #+begin_src emacs-lisp
   (use-package markdown-mode)
 #+end_src
 #+begin_src emacs-lisp
   (use-package markdown-mode)
 #+end_src
+** scdoc mode
+Get it for yourself at https://git.armaanb.net/scdoc
+#+begin_src emacs-lisp
+  (add-to-list 'load-path "~/Code/scdoc-mode")
+  (autoload 'scdoc-mode "scdoc-mode" "Major mode for editing scdoc files" t)
+  (add-to-list 'auto-mode-alist '("\\.scd\\'" . scdoc-mode))
+#+end_src
 * Keybindings
 ** Switch windows
 #+begin_src emacs-lisp
 * Keybindings
 ** Switch windows
 #+begin_src emacs-lisp
@@ -732,6 +742,8 @@ No more clogging up init.el.
     :straight (0x0 :type git :repo "https://git.sr.ht/~zge/nullpointer-emacs")
     :custom (0x0-default-service 'envs))
 #+end_src
     :straight (0x0 :type git :repo "https://git.sr.ht/~zge/nullpointer-emacs")
     :custom (0x0-default-service 'envs))
 #+end_src
+*** TODO Replace this with uploading to my own server
+Similar to the ufile alias in my ashrc
 ** Automatically clean buffers
 Automatically close unused buffers (except those of Circe) at midnight.
 #+begin_src emacs-lisp
 ** Automatically clean buffers
 Automatically close unused buffers (except those of Circe) at midnight.
 #+begin_src emacs-lisp
@@ -802,7 +814,7 @@ I'm not a huge fan of how spectrwm handles keybindings, probably my biggest grip
 #+end_src
 **** Programs
 #+begin_src conf :tangle ~/.spectrwm.conf
 #+end_src
 **** Programs
 #+begin_src conf :tangle ~/.spectrwm.conf
-  program[email] = emacsclient -ce "(mu4e)"
+  program[email] = emacsclient -ce '(progn (switch-to-buffer "*scratch*") (mu4e))'
   program[irc] = emacsclient -ce '(acheam-irc)'
   program[rss] = emacsclient -ce '(elfeed)'
   program[calendar] = emacsclient -ce '(acheam-calendar)'
   program[irc] = emacsclient -ce '(acheam-irc)'
   program[rss] = emacsclient -ce '(elfeed)'
   program[calendar] = emacsclient -ce '(acheam-calendar)'
@@ -887,6 +899,8 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
   export LC_CTYPE="en_US.UTF-8"
   export LANGUAGE="en_US.UTF-8"
 
   export LC_CTYPE="en_US.UTF-8"
   export LANGUAGE="en_US.UTF-8"
 
+  export CDPATH=:~
+
   export KISS_PATH="/home/armaa/Virtual/kiss/home/armaa/kiss-repo"
   export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-main/core"
   export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-main/extra"
   export KISS_PATH="/home/armaa/Virtual/kiss/home/armaa/kiss-repo"
   export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-main/core"
   export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-main/extra"
@@ -910,7 +924,7 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
 #+end_src
 **** File management
 #+begin_src shell :tangle ~/.config/ash/ashrc
 #+end_src
 **** File management
 #+begin_src shell :tangle ~/.config/ash/ashrc
-  alias ls='ls -lh --group-directories-first'
+  alias ls='LC_COLLATE=C ls -lh --group-directories-first'
   alias la='ls -A'
   alias df='df -h / /boot'
   alias du='du -h'
   alias la='ls -A'
   alias df='df -h / /boot'
   alias du='du -h'
@@ -1239,3 +1253,28 @@ I use tmux in order to keep my st build light. Still learning how it works.
   default-cache-ttl 600
   allow-emacs-pinentry
 #+end_src
   default-cache-ttl 600
   allow-emacs-pinentry
 #+end_src
+** Xmodmap
+#+begin_src conf :tangle ~/.config/xmodmap
+  !
+  ! Unmap left super
+  !
+  clear mod4
+
+  !
+  ! Turn right alt into super
+  !
+  remove mod1 = Alt_R
+  add mod4 = Alt_R
+
+  !
+  ! Swap caps and control
+  !
+  remove Lock = Caps_Lock
+  remove Control = Control_L
+  remove Lock = Control_L
+  remove Control = Caps_Lock
+  keysym Control_L = Caps_Lock
+  keysym Caps_Lock = Control_L
+  add Lock = Caps_Lock
+  add Control = Control_L
+#+end_src