aboutsummaryrefslogtreecommitdiff
path: root/Emacs/.config
diff options
context:
space:
mode:
Diffstat (limited to 'Emacs/.config')
-rw-r--r--Emacs/.config/emacs/config.org98
1 files changed, 51 insertions, 47 deletions
diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org
index 75b789c..a4767dd 100644
--- a/Emacs/.config/emacs/config.org
+++ b/Emacs/.config/emacs/config.org
@@ -1,6 +1,6 @@
#+title: Emacs configuration
#+author: Aryadev Chavali
-#+description: My new Emacs configuration
+#+description: My Emacs configuration
#+property: header-args:emacs-lisp :tangle config.el :comments link :results none
#+options: toc:nil
@@ -10,7 +10,7 @@ My configuration for vanilla Emacs
#+latex: \clearpage
#+toc: headlines
-* Initial
+* Basics
Let's setup some basic functionality.
Firstly, set full name and mail address for use in a variety of
@@ -44,8 +44,8 @@ Emacs.
no-littering-var-directory (expand-file-name ".local/" user-emacs-directory)))
#+end_src
** File saves and custom file
-Now let's setup file saving and auto-revert-mode. Along with that,
-setup the custom-file to exist in the var-directory
+Setup file saving and auto-revert-mode. Along with that, setup the
+custom-file to exist in the var-directory
#+begin_src emacs-lisp
(use-package emacs
:straight nil
@@ -170,9 +170,8 @@ Set font size to 140 if on my desktop (oldboy) or 175 if on my laptop
Turn off the startup buffer because I prefer [[Dashboard]], and write into
the scratch buffer some nice information about Emacs.
#+begin_src emacs-lisp
-(use-package startup
+(use-package emacs
:straight nil
- :defer t
:init
(setq inhibit-startup-screen t
initial-scratch-message (format ";; Emacs v%s\n" emacs-version)
@@ -210,7 +209,6 @@ leader but doesn't try to fully assimilate the local-leader map
instead just picking stuff I think is useful.
#+begin_src emacs-lisp
(use-package general
- :defer nil
:demand t
:config
(general-def
@@ -245,8 +243,6 @@ Add bindings for ~+literate/~ namespace, allows for quick reloads.
"d" #'delete-frame))
#+end_src
*** Some default binds in Emacs
-With a ton of use-package declarations (to defer until the last
-moment), bind to general some basic binds.
#+begin_src emacs-lisp
(use-package emacs
:straight nil
@@ -623,22 +619,25 @@ setups for company as it only makes it slower to use. In this case,
just setup some evil binds for company.
#+begin_src emacs-lisp
(use-package company
+ :straight t
:hook
(prog-mode-hook . company-mode)
(eshell-mode-hook . company-mode)
:general
- (imap (kbd "C-SPC") #'company-complete)
- (:states '(normal insert)
- "M-j" #'company-select-next
- "M-k" #'company-select-previous))
+ (imap
+ "C-SPC" #'company-complete)
+ (general-def
+ :states '(normal insert)
+ "M-j" #'company-select-next
+ "M-k" #'company-select-previous))
#+end_src
** Pretty symbols
Prettify symbols mode allows for users to declare 'symbols' that
replace text within certain modes. For example, you may replace the
-'for' word in c-mode in trade of the logical symbol for [[https://en.wikipedia.org/wiki/Universal_quantification][universal
-quantification]]. Though this may seem like useless eye candy, it has
-aided my comprehension and speed of recognition (recognising symbols
-is easier than words for many, including me).
+'for' word in c-mode for [[https://en.wikipedia.org/wiki/Universal_quantification][universal quantification]]. Though this may
+seem like useless eye candy, it has aided my comprehension and speed
+of recognition (recognising symbols is easier than words for many,
+including me).
Now here I provide a macro +pretty/set-alist. This macro works pretty
simply: given a mode hook, as well as a list of pairs typed (text to
@@ -646,8 +645,9 @@ substitute, symbol to replace with). Then I add a hook to the given
mode, setting the prettify-symbols-alist to the symbols given.
I've declared it pretty high up into my config so that the rest of my
-packages can leverage it.
-
+packages can leverage it. Furthermore I've added a use-package
+keyword which makes declaring this for language modes incredibly
+easy. Checkout my [[C/C++][C/C++]] configuration for an example.
#+begin_src emacs-lisp
(use-package prog-mode
:straight nil
@@ -711,13 +711,12 @@ later.
** Window management
Window management is really important. I find the default window
handling of Emacs incredibly annoying: sometimes consuming my windows,
-sometimes creating new ones. Of course, as Emacs is a powerful lisp
-interpreter, this is easily manageable.
+sometimes creating new ones. Of course, anything and everything is
+adaptable in Emacs, this behavior is no different.
-Here I create a few use-package extensions that manages the whole
-ordeal of adding a new record to the display-buffer-alist, a useful
-abstraction that makes it easy to manage the various buffers created
-by packages.
+Here I create a use-package extension that manages the whole ordeal of
+adding a new record to the display-buffer-alist, a useful abstraction
+that makes it easy to manage the various buffers created by packages.
#+begin_src emacs-lisp
(use-package window
:straight nil
@@ -1265,8 +1264,8 @@ most repositories nowadays.
*** rg
#+begin_src emacs-lisp
(use-package rg
- :defer t
- :commands (+rg/search-in-new-frame)
+ :after grep
+ :commands (rg +rg/search-in-new-frame)
:general
(leader
"sr" #'rg
@@ -1326,6 +1325,7 @@ initial startup screen in default Emacs.
** EWW
#+begin_src emacs-lisp
(use-package eww
+ :defer t
:straight nil
:config
(with-eval-after-load "evil-collection"
@@ -1375,6 +1375,7 @@ integrate it into my workflow just a bit better.
*** Notmuch
#+begin_src emacs-lisp
(use-package notmuch
+ :defer t
:commands (notmuch +mail/flag-thread)
:general
(leader "am" #'notmuch)
@@ -1384,6 +1385,19 @@ integrate it into my workflow just a bit better.
:init
(defconst +mail/signature "---------------\nAryadev Chavali")
(defconst +mail/local-dir (concat user-emacs-directory ".mail/"))
+ (setq notmuch-show-logo nil
+ notmuch-search-oldest-first nil
+ notmuch-hello-sections '(notmuch-hello-insert-saved-searches
+ notmuch-hello-insert-alltags
+ notmuch-hello-insert-recent-searches)
+ notmuch-archive-tags '("-inbox" "-unread" "+archive")
+ mail-signature +mail/signature
+ mail-default-directory +mail/local-dir
+ mail-source-directory +mail/local-dir
+ message-signature +mail/signature
+ message-auto-save-directory +mail/local-dir
+ message-directory +mail/local-dir)
+
(defun +mail/sync-mail ()
"Sync mail via mbsync."
(interactive)
@@ -1399,19 +1413,6 @@ integrate it into my workflow just a bit better.
(notmuch-tag-change-list '("-inbox" "+flagged") unflag) beg end)
(when (eq beg end)
(notmuch-search-next-thread)))
- :custom
- (notmuch-show-logo nil)
- (notmuch-search-oldest-first nil)
- (notmuch-hello-sections '(notmuch-hello-insert-saved-searches notmuch-hello-insert-alltags notmuch-hello-insert-recent-searches))
- (notmuch-archive-tags '("-inbox" "-unread" "+archive"))
- (mail-signature +mail/signature)
- (mail-default-directory +mail/local-dir)
- (mail-source-directory +mail/local-dir)
- (message-signature +mail/signature)
- (message-auto-save-directory +mail/local-dir)
- (message-directory +mail/local-dir)
- :config
- ;; sync mail after refresh
(advice-add #'notmuch-poll-and-refresh-this-buffer :before
#'+mail/sync-mail)
(advice-add #'notmuch-poll-and-refresh-this-buffer :after
@@ -1440,7 +1441,9 @@ for dired (even though dired doesn't really conflict with evil, there
are some corners I'd like to adjust).
#+begin_src emacs-lisp
(use-package dired
+ :defer t
:straight nil
+ :commands (dired find-dired dired-jump)
:hook
(dired-mode-hook . dired-hide-details-mode)
(dired-mode-hook . auto-revert-mode)
@@ -1816,7 +1819,7 @@ calculation:
- Equation solvers for n-degree multi-variable polynomials
- Embedded mode!
-=calc-mode= is a calculator system within Emacs that provides a
+~calc-mode~ is a calculator system within Emacs that provides a
diverse array of mathematical operations. It uses reverse polish
notation to do calculations (though there is a standard infix
algebraic notation mode).
@@ -1830,7 +1833,8 @@ algebraic notation mode).
(window-height . 0.18))
:general
(leader
- "ac" #'calc)
+ "ac" #'calc-dispatch
+ "tc" #'calc-embedded)
:init
(setq calc-algebraic-mode t)
:config
@@ -2099,6 +2103,7 @@ There is no proper PDF viewing without this package.
=evil-collection= provides a setup for this mode, so use that.
#+begin_src emacs-lisp
(use-package pdf-tools
+ :straight t
:mode ("\\.[pP][dD][fF]" . pdf-view-mode)
:display
("^.*pdf$"
@@ -2246,7 +2251,7 @@ Some bindings for org mode.
"fw" #'org-capture)
(nmmap
:keymaps 'org-mode-map
- [remap counsel-imenu] #'+org/swiper-goto)
+ [remap imenu] #'+org/swiper-goto)
(local-leader
:keymaps 'org-mode-map
"t" #'org-todo
@@ -2352,7 +2357,7 @@ a very tidy way to manage your time.
:after (org evil)
:straight nil
:init
- (setq org-agenda-files (list (expand-file-name "~/Text"))
+ (setq org-agenda-files (list (expand-file-name "~/Text") (expand-file-name "~/Text/Notes"))
org-agenda-window-setup 'current-window
org-agenda-skip-deadline-prewarning-if-scheduled t)
:config
@@ -2402,9 +2407,8 @@ time a clock out occurs.")
#+end_src
** C/C++
Setup for C and C++ modes via the cc-mode package. C and C++ are
-great languages for general purpose programming. Furthermore, they
-provide speed and finer control in trade of aesthetics and
-security-based abstractions.
+great languages for general purpose programming. My preferred choice
+when I want greater control over memory management.
*** Configuration
#+begin_src emacs-lisp
(use-package cc-mode