Update the README and make it more user-friendly.
Add a link to the thread I wrote
This commit is contained in:
parent
263abac66d
commit
a6fa2219b7
1 changed files with 77 additions and 49 deletions
|
@ -4,59 +4,27 @@
|
||||||
#+language: en
|
#+language: en
|
||||||
#+options: ':t toc:nil num:t author:t email:t
|
#+options: ':t toc:nil num:t author:t email:t
|
||||||
|
|
||||||
This configuration is inspired from the work of [[https://github.com/protesilaos/dotfiles/blob/master/emacs/.emacs.d/prot-emacs.org][my hero Prot]]. I've
|
* Quick Start
|
||||||
copied straight from his config file, because I think the explanations
|
:PROPERTIES:
|
||||||
he has created are worthwhile and should be read by everyone. Prot's
|
:CUSTOM_ID: h:2818C76B-3A6D-4676-8159-ED7BBFA45501
|
||||||
files are all prefixed with =prot-emacs-*=. I have changed this to
|
:CREATED: [2024-12-19 Thu 17:06]
|
||||||
=unravel-*=. The reason for this is that I have picked up only what I
|
:END:
|
||||||
need and changed it based on my usage. As such, any issues you face
|
|
||||||
with this configuration are likely introduced by me.
|
|
||||||
|
|
||||||
I use emacs on Mac OSX as my primary development environment. I
|
1. Install the latest available Emacs version, with native-compilation
|
||||||
install the latest available pre-compiled Emacs (with native
|
and tree-sitter support.
|
||||||
compilation), as provided by Jimeh here: [[https://github.com/jimeh/emacs-builds?tab=readme-ov-file][jimeh/emacs-builds]].
|
- I use the latest release from [[https://github.com/jimeh/emacs-builds?tab=readme-ov-file][jimeh/emacs-builds]] on MacOSX
|
||||||
|
2. Clone this repository as your =.emacs.d= folder and start Emacs.
|
||||||
|
3. When you open any programming language file, run =M-x eglot= to
|
||||||
|
start an LSP server in the background and connect to it.
|
||||||
|
4. Go through the Table of Contents below and read details of
|
||||||
|
whichever section you are interested in knowing more about. Reach
|
||||||
|
out with questions, they will help me improve the README further!
|
||||||
|
|
||||||
Any quote without attribution is directly taken from [[https://github.com/protesilaos/dotfiles/blob/master/emacs/.emacs.d/prot-emacs.org][Prot's org file]].
|
[ A short thread on the configuration: https://fosstodon.org/@vedang/113685331202099234 (2024-12-20) ]
|
||||||
Prot gives even more detailed explanations in his writing, I have only
|
|
||||||
picked snippets. The interested reader should definitely go through
|
|
||||||
Prot's notes.
|
|
||||||
|
|
||||||
To make a change to this Emacs configuration, edit this file and then
|
|
||||||
type =C-c C-v C-t= (=M-x org-babel-tangle=) to republish all the
|
|
||||||
relevant files.
|
|
||||||
|
|
||||||
#+begin_quote
|
|
||||||
What you are now reading is not a common literate configuration of
|
|
||||||
Emacs. In most such cases, you have a generic =init.el= with a call to
|
|
||||||
the ~org-babel-load-file~ function that gets an Org document as its
|
|
||||||
value. That method works but is very slow, because we have to load Org
|
|
||||||
before starting Emacs (and Org loads a bunch of other things we do not
|
|
||||||
need at such an early stage).
|
|
||||||
|
|
||||||
Whereas this Org document serves as (i) a single point of entry to my
|
|
||||||
Emacs setup and (ii) the origin of all of my Emacs configurations.
|
|
||||||
While I am defining everything in a single Org file, I am not actually
|
|
||||||
starting Emacs by reading this file. Rather, I am instructing Org to
|
|
||||||
put the code blocks defined herein in standalone files, organised by
|
|
||||||
scope. The end result is something where you cannot tell whether a
|
|
||||||
literate program was executed or not.
|
|
||||||
|
|
||||||
This is the beauty of it. I can keep editing a single file as the
|
|
||||||
"source of truth", though I can still handle each of the files
|
|
||||||
individually (e.g. someone wants to see how I do a specific thing, so
|
|
||||||
I share only that file as an email attachment---no need to send over
|
|
||||||
this massive document).
|
|
||||||
|
|
||||||
When I want to modify my Emacs setup, I edit this file and then
|
|
||||||
evaluate the following code block or do =C-c C-v C-t=. All files will
|
|
||||||
be updated accordingly.
|
|
||||||
#+end_quote
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp :tangle no :results none
|
|
||||||
(org-babel-tangle)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Table of Contents :TOC:
|
* Table of Contents :TOC:
|
||||||
|
- [[#quick-start][Quick Start]]
|
||||||
|
- [[#introduction][Introduction]]
|
||||||
- [[#the-early-initel-file][The =early-init.el= file]]
|
- [[#the-early-initel-file][The =early-init.el= file]]
|
||||||
- [[#the-early-initel-basic-frame-settings][The =early-init.el= basic frame settings]]
|
- [[#the-early-initel-basic-frame-settings][The =early-init.el= basic frame settings]]
|
||||||
- [[#the-early-initel-tweaks-to-startup-time-and-garbage-collection][The =early-init.el= tweaks to startup time and garbage collection]]
|
- [[#the-early-initel-tweaks-to-startup-time-and-garbage-collection][The =early-init.el= tweaks to startup time and garbage collection]]
|
||||||
|
@ -90,6 +58,7 @@ be updated accordingly.
|
||||||
- [[#the-unravel-essentialsel-block-with-basic-configurations][The =unravel-essentials.el= block with basic configurations]]
|
- [[#the-unravel-essentialsel-block-with-basic-configurations][The =unravel-essentials.el= block with basic configurations]]
|
||||||
- [[#the-unravel-essentialsel-section-for-fixing-path-on-osx-exec-path-from-shell][The =unravel-essentials.el= section for fixing PATH on OSX (~exec-path-from-shell~)]]
|
- [[#the-unravel-essentialsel-section-for-fixing-path-on-osx-exec-path-from-shell][The =unravel-essentials.el= section for fixing PATH on OSX (~exec-path-from-shell~)]]
|
||||||
- [[#the-unravel-essentialsel-configuration-to-track-recently-visited-files-recentf][The =unravel-essentials.el= configuration to track recently visited files (~recentf~)]]
|
- [[#the-unravel-essentialsel-configuration-to-track-recently-visited-files-recentf][The =unravel-essentials.el= configuration to track recently visited files (~recentf~)]]
|
||||||
|
- [[#the-unravel-essentialsel-configuration-to-track-my-place-in-visited-files-saveplace][The =unravel-essentials.el= configuration to track my place in visited files (~saveplace~)]]
|
||||||
- [[#the-unravel-essentialsel-settings-for-bookmarks][The =unravel-essentials.el= settings for bookmarks]]
|
- [[#the-unravel-essentialsel-settings-for-bookmarks][The =unravel-essentials.el= settings for bookmarks]]
|
||||||
- [[#the-unravel-essentialsel-settings-for-registers][The =unravel-essentials.el= settings for registers]]
|
- [[#the-unravel-essentialsel-settings-for-registers][The =unravel-essentials.el= settings for registers]]
|
||||||
- [[#the-unravel-essentialsel-settings-for-files][The =unravel-essentials.el= settings for files]]
|
- [[#the-unravel-essentialsel-settings-for-files][The =unravel-essentials.el= settings for files]]
|
||||||
|
@ -214,6 +183,65 @@ be updated accordingly.
|
||||||
- [[#the-prot-windowel-library][The =prot-window.el= library]]
|
- [[#the-prot-windowel-library][The =prot-window.el= library]]
|
||||||
- [[#the-vedang-personalel-module][The =vedang-personal.el= module]]
|
- [[#the-vedang-personalel-module][The =vedang-personal.el= module]]
|
||||||
|
|
||||||
|
* Introduction
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: h:D8816D6D-3B30-4ED5-9AE5-892029BA6C24
|
||||||
|
:CREATED: [2024-12-19 Thu 17:05]
|
||||||
|
:END:
|
||||||
|
|
||||||
|
This configuration is inspired from the work of [[https://github.com/protesilaos/dotfiles/blob/master/emacs/.emacs.d/prot-emacs.org][my hero Prot]]. I've
|
||||||
|
copied straight from his config file, because I think the explanations
|
||||||
|
he has created are worthwhile and should be read by everyone. Prot's
|
||||||
|
files are all prefixed with =prot-emacs-*=. I have changed this to
|
||||||
|
=unravel-*=. The reason for this is that I have picked up only what I
|
||||||
|
need and changed it based on my usage. As such, any issues you face
|
||||||
|
with this configuration are likely introduced by me.
|
||||||
|
|
||||||
|
I use emacs on Mac OSX as my primary development environment. I
|
||||||
|
install the latest available pre-compiled Emacs (with native
|
||||||
|
compilation), as provided by Jimeh here: [[https://github.com/jimeh/emacs-builds?tab=readme-ov-file][jimeh/emacs-builds]].
|
||||||
|
|
||||||
|
Any quote without attribution is directly taken from [[https://github.com/protesilaos/dotfiles/blob/master/emacs/.emacs.d/prot-emacs.org][Prot's org file]].
|
||||||
|
Prot gives even more detailed explanations in his writing, I have only
|
||||||
|
picked snippets. The interested reader should definitely go through
|
||||||
|
Prot's notes.
|
||||||
|
|
||||||
|
To make a change to this Emacs configuration, edit this file and then
|
||||||
|
type =C-c C-v C-t= (=M-x org-babel-tangle=) to republish all the
|
||||||
|
relevant files.
|
||||||
|
|
||||||
|
#+begin_quote
|
||||||
|
What you are now reading is not a common literate configuration of
|
||||||
|
Emacs. In most such cases, you have a generic =init.el= with a call to
|
||||||
|
the ~org-babel-load-file~ function that gets an Org document as its
|
||||||
|
value. That method works but is very slow, because we have to load Org
|
||||||
|
before starting Emacs (and Org loads a bunch of other things we do not
|
||||||
|
need at such an early stage).
|
||||||
|
|
||||||
|
Whereas this Org document serves as (i) a single point of entry to my
|
||||||
|
Emacs setup and (ii) the origin of all of my Emacs configurations.
|
||||||
|
While I am defining everything in a single Org file, I am not actually
|
||||||
|
starting Emacs by reading this file. Rather, I am instructing Org to
|
||||||
|
put the code blocks defined herein in standalone files, organised by
|
||||||
|
scope. The end result is something where you cannot tell whether a
|
||||||
|
literate program was executed or not.
|
||||||
|
|
||||||
|
This is the beauty of it. I can keep editing a single file as the
|
||||||
|
"source of truth", though I can still handle each of the files
|
||||||
|
individually (e.g. someone wants to see how I do a specific thing, so
|
||||||
|
I share only that file as an email attachment---no need to send over
|
||||||
|
this massive document).
|
||||||
|
|
||||||
|
When I want to modify my Emacs setup, I edit this file and then
|
||||||
|
evaluate the following code block or do =C-c C-v C-t=. All files will
|
||||||
|
be updated accordingly.
|
||||||
|
#+end_quote
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :tangle no :results none
|
||||||
|
(org-babel-tangle)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
* The =early-init.el= file
|
* The =early-init.el= file
|
||||||
|
|
||||||
#+begin_quote
|
#+begin_quote
|
||||||
|
|
Loading…
Reference in a new issue