(Emacs)~rearranged some sections, removed some
This commit is contained in:
@@ -57,67 +57,6 @@ setup the custom-file to exist in the var-directory
|
|||||||
:config
|
:config
|
||||||
(global-auto-revert-mode 1))
|
(global-auto-revert-mode 1))
|
||||||
#+end_src
|
#+end_src
|
||||||
** Hide-show mode
|
|
||||||
Turn on =hs-minor-mode= for all prog-mode.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package hideshow
|
|
||||||
:straight nil
|
|
||||||
:hook (prog-mode-hook . hs-minor-mode))
|
|
||||||
#+end_src
|
|
||||||
** Aesthetics
|
|
||||||
Load my custom "personal-theme" theme which is stored in the Emacs lisp
|
|
||||||
folder (look at [[file:elisp/personal-theme.el][this file]]).
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package custom
|
|
||||||
:demand t
|
|
||||||
:straight nil
|
|
||||||
:init
|
|
||||||
(setq custom-theme-directory (concat user-emacs-directory "elisp/"))
|
|
||||||
:config
|
|
||||||
(load-theme 'personal t))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Set font size to 125.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package faces
|
|
||||||
:straight nil
|
|
||||||
:config
|
|
||||||
(set-face-attribute 'default nil :height 115))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
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
|
|
||||||
:straight nil
|
|
||||||
:defer t
|
|
||||||
:init
|
|
||||||
(setq inhibit-startup-screen t
|
|
||||||
initial-scratch-message (format ";; Emacs v%s\n" emacs-version)
|
|
||||||
ring-bell-function 'ignore))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Turn off blinking-cursor-mode as we will later be setting up hl-line,
|
|
||||||
which does a better job of indicating where the cursor is on screen.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package frame
|
|
||||||
:straight nil
|
|
||||||
:config
|
|
||||||
(blink-cursor-mode 0))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
After turning off borders in my window manager, I tried turning off
|
|
||||||
the borders for Emacs. Incredible, must be done.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package fringe
|
|
||||||
:after dashboard
|
|
||||||
:straight nil
|
|
||||||
:init
|
|
||||||
(setq left-fringe-width 0
|
|
||||||
right-fringe-width 0)
|
|
||||||
:config
|
|
||||||
(fringe-mode 0))
|
|
||||||
#+end_src
|
|
||||||
** Path
|
** Path
|
||||||
Setting the path variable cos it can get annoying sometimes
|
Setting the path variable cos it can get annoying sometimes
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
@@ -135,30 +74,6 @@ These are general custom functions I have defined for various
|
|||||||
purposes. These encapsulate functionality that could apply to
|
purposes. These encapsulate functionality that could apply to
|
||||||
multiple packages/situations, otherwise I would've defined it in the
|
multiple packages/situations, otherwise I would've defined it in the
|
||||||
place it's required.
|
place it's required.
|
||||||
** New line function
|
|
||||||
Vim doesn't have a nice way of adding new lines before or after the
|
|
||||||
current line while staying in normal mode. You can use =o/O= to enter
|
|
||||||
insert mode at a new line, but this isn't the same as being able to
|
|
||||||
stay in normal mode while opening newlines and only adds extra
|
|
||||||
key presses if your only purpose was to open up some lines. Enter +dx/newline
|
|
||||||
|
|
||||||
|
|
||||||
The logic is pretty simple:
|
|
||||||
- Record current location as =old=
|
|
||||||
- Use the predefined vim functions for opening new lines above and
|
|
||||||
below with insert mode
|
|
||||||
- Return to =old=
|
|
||||||
- Enter normal state
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(with-eval-after-load "evil"
|
|
||||||
(defun +dx/newline (&optional BACKWARD)
|
|
||||||
(interactive)
|
|
||||||
(save-excursion
|
|
||||||
(cond ((and BACKWARD (= BACKWARD 1)) (evil-open-below 1))
|
|
||||||
(t (evil-open-above 1))))
|
|
||||||
(evil-normal-state)))
|
|
||||||
#+end_src
|
|
||||||
** Toggle buffer
|
** Toggle buffer
|
||||||
There are many cases where 'toggling' a buffer is very useful. For
|
There are many cases where 'toggling' a buffer is very useful. For
|
||||||
example, toggling a shell to access it quickly and hide it away with
|
example, toggling a shell to access it quickly and hide it away with
|
||||||
@@ -225,16 +140,6 @@ errors and general messages. Better than vim, eh?
|
|||||||
,@to-run))
|
,@to-run))
|
||||||
(add-hook 'after-save-hook (quote ,func-name)))))
|
(add-hook 'after-save-hook (quote ,func-name)))))
|
||||||
#+end_src
|
#+end_src
|
||||||
** Power function
|
|
||||||
Basic, tail recursive algorithm for calculating powers.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defun pow (a n &optional initial)
|
|
||||||
"Raise a to the nth power. Use initial to set the initial value."
|
|
||||||
(let ((init (or initial 1)))
|
|
||||||
(if (= n 0)
|
|
||||||
init
|
|
||||||
(pow a (- n 1) (* a init)))))
|
|
||||||
#+end_src
|
|
||||||
** Define procedure
|
** Define procedure
|
||||||
The =lambda= macro provides a function with possible arguments. A
|
The =lambda= macro provides a function with possible arguments. A
|
||||||
procedure is a type of form that takes no arguments. This macro
|
procedure is a type of form that takes no arguments. This macro
|
||||||
@@ -246,6 +151,61 @@ common use of this macro.
|
|||||||
"For a given list of forms CDR, return a quoted non-argument lambda."
|
"For a given list of forms CDR, return a quoted non-argument lambda."
|
||||||
`(quote (lambda () ,@CDR)))
|
`(quote (lambda () ,@CDR)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
* Aesthetics
|
||||||
|
Load my custom "personal-theme" theme which is stored in the Emacs lisp
|
||||||
|
folder (look at [[file:elisp/personal-theme.el][this file]]).
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package custom
|
||||||
|
:demand t
|
||||||
|
:straight nil
|
||||||
|
:init
|
||||||
|
(setq custom-theme-directory (concat user-emacs-directory "elisp/"))
|
||||||
|
:config
|
||||||
|
(load-theme 'personal t))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Set font size to 125.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package faces
|
||||||
|
:straight nil
|
||||||
|
:config
|
||||||
|
(+dx/env-cond "spiderboy" (set-face-attribute 'default nil :height 150))
|
||||||
|
(+dx/env-cond "oldboy" (set-face-attribute 'default nil :height 115)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
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
|
||||||
|
:straight nil
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(setq inhibit-startup-screen t
|
||||||
|
initial-scratch-message (format ";; Emacs v%s\n" emacs-version)
|
||||||
|
ring-bell-function 'ignore))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Turn off blinking-cursor-mode as we will later be setting up hl-line,
|
||||||
|
which does a better job of indicating where the cursor is on screen.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package frame
|
||||||
|
:straight nil
|
||||||
|
:config
|
||||||
|
(blink-cursor-mode 0))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
After turning off borders in my window manager, I tried turning off
|
||||||
|
the borders for Emacs. Incredible, must be done.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package fringe
|
||||||
|
:after dashboard
|
||||||
|
:straight nil
|
||||||
|
:init
|
||||||
|
(setq left-fringe-width 0
|
||||||
|
right-fringe-width 0)
|
||||||
|
:config
|
||||||
|
(fringe-mode 0))
|
||||||
|
#+end_src
|
||||||
* Core packages
|
* Core packages
|
||||||
** General
|
** General
|
||||||
Setup general, a good package for defining keys. In this case, I
|
Setup general, a good package for defining keys. In this case, I
|
||||||
@@ -277,6 +237,16 @@ instead just picking stuff I think is useful.
|
|||||||
:infix "b"
|
:infix "b"
|
||||||
"d" #'kill-this-buffer))
|
"d" #'kill-this-buffer))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Add bindings for ~+literate/~ namespace, allows for quick reloads.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package general
|
||||||
|
:general
|
||||||
|
(leader
|
||||||
|
:infix "q"
|
||||||
|
"c" #'+literate/compile-config
|
||||||
|
"l" #'+literate/load-config))
|
||||||
|
#+end_src
|
||||||
*** Some default binds in Emacs
|
*** Some default binds in Emacs
|
||||||
With a ton of use-package declarations (to defer until the last
|
With a ton of use-package declarations (to defer until the last
|
||||||
moment), bind to general some basic binds.
|
moment), bind to general some basic binds.
|
||||||
@@ -303,47 +273,17 @@ moment), bind to general some basic binds.
|
|||||||
"f" #'find-file
|
"f" #'find-file
|
||||||
"F" #'find-file-other-frame
|
"F" #'find-file-other-frame
|
||||||
"s" #'save-buffer
|
"s" #'save-buffer
|
||||||
"p" (proc (interactive) (find-file (concat user-emacs-directory "config.org")))))
|
"p" (proc (interactive) (find-file (concat user-emacs-directory "config.org"))))
|
||||||
|
|
||||||
(use-package compile
|
|
||||||
:straight nil
|
|
||||||
:general
|
|
||||||
(leader
|
(leader
|
||||||
"cc" #'compile))
|
"cc" #'compile)
|
||||||
|
|
||||||
(use-package imenu
|
|
||||||
:straight nil
|
|
||||||
:general
|
|
||||||
(leader
|
(leader
|
||||||
"si" #'imenu))
|
"si" #'imenu)
|
||||||
|
|
||||||
(use-package help
|
|
||||||
:straight nil
|
|
||||||
:general
|
|
||||||
(leader
|
(leader
|
||||||
"h" #'help-command))
|
"h" #'help-command))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Binds for literate
|
|
||||||
If you check [[file:init.el][init.el]] you'll see I define a class of functions with the
|
|
||||||
=+literate/= namespace. In particular the =+literate/load-config= and
|
|
||||||
=+literate/compile-config= functions provide useful functionality for
|
|
||||||
the config.
|
|
||||||
|
|
||||||
I usually use these functions when testing out new Emacs features:
|
|
||||||
I'll write a bit of code in this org file, compile using
|
|
||||||
=+literate/compile-config= then test it out in a new Emacs session.
|
|
||||||
If I like the feature, I keep it in my org file. If I don't, no harm
|
|
||||||
done as once I end the current Emacs session it'll recompile and
|
|
||||||
remove the section.
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package general
|
|
||||||
:general
|
|
||||||
(leader
|
|
||||||
:infix "q"
|
|
||||||
"c" #'+literate/compile-config
|
|
||||||
"l" #'+literate/load-config))
|
|
||||||
#+end_src
|
|
||||||
** Evil
|
** Evil
|
||||||
Evil (Emacs VI Layer) is a package that brings the Vi experience to
|
Evil (Emacs VI Layer) is a package that brings the Vi experience to
|
||||||
Emacs. Packaged with it by default are:
|
Emacs. Packaged with it by default are:
|
||||||
@@ -2073,6 +2013,13 @@ highlighting.
|
|||||||
'(("TODO" . "#E50000")
|
'(("TODO" . "#E50000")
|
||||||
("WAIT" . "#00CC00"))))
|
("WAIT" . "#00CC00"))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
** Hide-show mode
|
||||||
|
Turn on =hs-minor-mode= for all prog-mode.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package hideshow
|
||||||
|
:straight nil
|
||||||
|
:hook (prog-mode-hook . hs-minor-mode))
|
||||||
|
#+end_src
|
||||||
** PDF
|
** PDF
|
||||||
PDFs are a format for (somewhat) immutable text and reports with great
|
PDFs are a format for (somewhat) immutable text and reports with great
|
||||||
formatting options. Though Emacs isn't my favourite application for
|
formatting options. Though Emacs isn't my favourite application for
|
||||||
|
|||||||
Reference in New Issue
Block a user