From 79b86425f2cff4dfe397500fd8055d27b8ed951d Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Fri, 12 Mar 2021 03:21:22 +0000 Subject: (Emacs)~small edits to explanations and some basic edits to code --- Emacs/.config/emacs/config.org | 78 ++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index 112c1d6..b857b01 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -208,18 +208,16 @@ Basic, tail recursive algorithm for calculating powers #+begin_src emacs-lisp (defun pow (a n &optional initial) "Raise a to the nth power. Use init to set the initial value." - (let ((init (if initial - initial - 1))) + (let ((init (or initial 1))) (if (= n 0) init (pow a (- n 1) (* a init))))) #+end_src ** Define procedure -=lambda= provides a function with possible arguments. A procedure is -something I define as essentially a function without arguments. This -macro returns an anonymous function with no arguments with all the -forms provided. It returns it in 'backquoted' form as that is the most +The =lambda= macro provides a function with possible arguments. A +procedure is a type of form that takes no arguments. This macro +returns an anonymous function with no arguments with all the forms +provided. It returns it in 'backquoted' form as that is the most common use of this macro. #+begin_src emacs-lisp (defmacro proc (&rest CDR) @@ -230,7 +228,7 @@ common use of this macro. ** General Setup general, a good package for defining keys. In this case, I generate a new definer for the "LEADER" keys. Leader is bound to SPC -and it's functionally equivalent the doom/spacemacs leader. +and it's functionally equivalent to the doom/spacemacs leader. #+begin_src emacs-lisp (use-package general :demand t @@ -314,17 +312,17 @@ moment), bind to general some basic binds. #+end_src ** Evil *** Evil Preamble -Evil (Emacs VI Layer) is a package that provides the Vi experience to -Emacs. Packaged with it alone are: -- Modal system +Evil (Emacs VI Layer) is a package that brings the Vi experience to +Emacs. Packaged with it by default are: +- The modal system - EX - Vi mapping functions -This provides a lot of stuff for the vim user moving to -Emacs. However there are many other packages surrounding evil that -provide even greater functionality from vi to Emacs. Surround, -commenting, multiple cursors and further support to other packages are -configured here. +This provides a lot of stuff for the average vim user moving to Emacs. +However there are many other packages surrounding evil that port even +greater functionality from vi to Emacs. Surround, commenting, +multiple cursors and further support to other packages are configured +here. *** Evil Core Setup the evil package, with some basic keybinds. #+begin_src emacs-lisp @@ -338,7 +336,7 @@ Setup the evil package, with some basic keybinds. "zC" #'hs-hide-level) (general-def :states 'visual - :keymaps 'emacs-lisp-mode-map + :keymaps '(emacs-lisp-mode-map lisp-interaction-mode-map) "gr" #'eval-region) (leader "w" #'evil-window-map @@ -371,9 +369,8 @@ Setup for multicursors in Evil mode. Don't let evil-mc setup it's own keymap because it uses 'gr' as its prefix, which I don't like. Instead, bind some useful functions to my personal =dx:evil-mc-map= -which is bound to 'gz'. Furthermore, define a function -=dx:evil-mc-cursor-here= which pauses cursors upon placing a cursor at -the current position. +which is bound to 'gz'. Define a function =dx:evil-mc-cursor-here= +which pauses cursors upon placing a cursor at the current position. #+begin_src emacs-lisp (use-package evil-mc :after evil @@ -443,18 +440,19 @@ desirable to some, it can be advanced through the use of 'completion frameworks'. These frameworks handle the input from the user for common commands -and provide a differing interface to the one Emacs comes with. Most of -these completion frameworks provide a text based menu that is actively -filtered as more input is provided. Along with these frameworks come -added functionality and applications to integrate into the Emacs -environment further. +and provide a differing interface to the one Emacs comes with. Most +of these completion frameworks provide a text based menu that is +actively filtered as more input is provided (progressive input +filtering). Along with these frameworks come added functionality and +applications to integrate into the Emacs environment further. One may say that when using a completion framework there is no point in using any other framework as they encompasses so much of the -default functionality. However I'd argue that with a bit of management -and Emacs lisp it's totally possible to pick and mix your options. For -small number selections (like finding files) use something like Ido -and for something larger like searching buffers use ivy. +default functionality. This is wrong: I'd argue that with a bit of +management and Emacs lisp it's totally possible to pick and mix your +options. For small number selections (like finding files) use +something like Ido and for something larger like searching buffers use +ivy. Along with frameworks, there is a configuration for the completions-list, which is actually the original and default method of @@ -470,7 +468,7 @@ Ido is a very old completion package that still works great to this day. Though it is limited in its scope (and may thus be called a completion add-on rather than a full on framework), it is still a very powerful package. With the use of ido-completing-read+, it may be used -to as a fully fledged completion framework. +similarly to a fully fledged completion framework. #+begin_src emacs-lisp (use-package ido @@ -551,6 +549,7 @@ Along with that, set the help function and variable functions to their helpful counterparts. #+begin_src emacs-lisp (use-package counsel + :commands +org/swiper-goto :general (leader "ss" #'counsel-grep-or-swiper @@ -623,10 +622,10 @@ just setup some evil binds for company. ** 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 '∀'. Though this may seem like -useless eye candy, it actually increases my speed of recognition -(recognising symbols is easier than words for many, including -me). +'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). 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 @@ -1157,7 +1156,9 @@ integrate it into my workflow just a bit better. :config ;; sync mail after refresh (advice-add #'notmuch-poll-and-refresh-this-buffer :before - #'+mail/sync-mail)) + #'+mail/sync-mail) + (with-eval-after-load "evil-collection" + (evil-collection-notmuch-setup))) #+end_src *** Smtpmail #+begin_src emacs-lisp @@ -1428,10 +1429,12 @@ don't need to write everything myself. ** IBuffer #+begin_src emacs-lisp (use-package ibuffer - :after evil :general (leader - "bi" #'ibuffer)) + "bi" #'ibuffer) + :config + (with-eval-after-load "evil-collection" + (evil-collection-ibuffer-setup))) #+end_src ** Proced Proced is the process manager for Emacs. Just setup evil-collection @@ -2019,6 +2022,7 @@ opposing style. "{\n" > _ "\n" "}\n")) + (c-add-style "user" '((c-basic-offset . 2) -- cgit v1.2.3-13-gbd6f