summaryrefslogtreecommitdiff
path: root/content/emacs/emacs-as-a-shell.md
blob: 2227be955703ebc879d0115bd319ae41e07c485f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
+++
title = "Emacs as a Shell"
author = ["Michał Sapka"]
date = 2023-04-13T23:00:00+02:00
categories = ["emacs"]
draft = false
weight = 3002
image_dir = "emacs"
image_max_width = 480
primary_menu = "cool-emacs-appendix"
abstract = "My current understanding of Emacs"
aliases = ["/2023/emacs-as-a-shell/", "/cool-emacs/emacs-as-a-shell/"]
[menu]
  [menu.cool-emacs-appendix]
    weight = 3002
    identifier = "emacs-as-a-shell"
+++

Pavel Korytov writes in his [recent post](https://sqrtminusone.xyz/posts/2023-04-13-emacs/);

> So over time, Emacs has become my programming environment, email client, window manager, knowledge base, and a lot more. I think I ended up using Emacs for almost as many things as possible;

This is where I want to be in the near future.
So far I've moved my development environment and email to Emacs.
Next up are notes, RSS reading, and music listening.

What I love about Emacs is the consistency between modes/packages.
They accomplish widely different things, but the general control scheme is the same.
It's great since all TUI programs I use tend to support Vim's way of doing things.
Having it all inside Emacs changes the dynamic.
I'm trying to think of Emacs as a shell rather than an editor.

What Emacs really is, is a virtual machine running LISP code.
Some say that Emacs violates Linux philosophy.
I don't see it this way.
Does shell violate it?
It's also a way to run different programs.
Emacs is an abstraction over real shell which adds some calm to it.
It's a way to have an interactive layer over OS... which also does text editing.

So, when you look at it this way, Emacs makes a lot of sense:

-   It runs programs.
    Bigger packages, like Magit, are nothing short of real programs.
-   It's scriptable.
    Elisp all the way!
-   It allows for interoperability between programs.
-   It runs above basic OS.
    You can replace your window manager with Emacs, but you need some sort of kernel.
-   You can live entirely inside Emacs, just like you can live entirely inside a terminal.