aboutsummaryrefslogtreecommitdiff
path: root/Emacs/.config/emacs
diff options
context:
space:
mode:
Diffstat (limited to 'Emacs/.config/emacs')
-rw-r--r--Emacs/.config/emacs/.config/elfeed/feeds.org38
-rw-r--r--Emacs/.config/emacs/config.org132
-rw-r--r--Emacs/.config/emacs/early-init.el2
-rw-r--r--Emacs/.config/emacs/elisp/elfeed-org.el20
-rw-r--r--Emacs/.config/emacs/elisp/eshell-additions.el15
-rw-r--r--Emacs/.config/emacs/elisp/eshell-prompt.el89
-rw-r--r--Emacs/.config/emacs/elisp/personal-light-theme.el13
7 files changed, 165 insertions, 144 deletions
diff --git a/Emacs/.config/emacs/.config/elfeed/feeds.org b/Emacs/.config/emacs/.config/elfeed/feeds.org
deleted file mode 100644
index 898633d..0000000
--- a/Emacs/.config/emacs/.config/elfeed/feeds.org
+++ /dev/null
@@ -1,38 +0,0 @@
-#+title: RSS Feeds
-#+author: Aryadev Chavali
-#+date: 2025-02-17
-
-* News :news:
-** [[https://www.archlinux.org/feeds/news/][Arch Linux]]
-** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCEDEqT7DeUJyVNc5QpwSTgQ][Barely Informed]]
-* Social :social:
-** [[https://news.ycombinator.com/rss][Hacker News]] :tech:
-** [[https://www.theonion.com/rss][The Onion]]
-** [[https://www.hackerfactor.com/blog/index.php?/feeds/index.rss2][Hacker Factor]] :tech:
-* Blogs :blogs:
-** [[https://protesilaos.com/master.xml][Protesilaos]]
-* YouTube :youtube:
-** Educational :educational:
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC0uTPqBCFIpZxlz_Lv1tk_g][Protesilaos Stavrou]] :tech:
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg][Tsoding Daily]] :tech:
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg][Tsoding]] :tech:
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCaTznQhurW5AaiYPbhEA-KA][Molly Rocket]] :tech:
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw][3B1B]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC6_J0wZdqcoRVs0Mck922SQ][Sheafification of G]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCr_Q-bPpcw5fJ-Oow1BW1NQ][Kraut]] :news:
-** Tech :tech:
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCfJRkBBiPtKZyZn_3PxWaiQ][Internet of Bugs]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA][Mental Outlaw]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCgBVkKoOAr3ajSdFFLp13_A][KRAZAM]]
-** Stories :stories:
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCbWcXB0PoqOsAvAdfzWMf0w][Fredrik Knusden]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC9PIn6-XuRKZ5HmYeu46AIw][Barely Sociable]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCn8OYopT9e8tng-CGEWzfmw][Atrocity Guide]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC7dHBh9QmYF1L0TOeGIzZgw][Lazy Masquerade]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCjDQKxiTVpXutZc2Ra9wCAg][Oki's Weird Stories]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCyNtlmLB73-7gtlBz00XOQQ][Folding Ideas]]
-** Misc :misc:
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCZ1q3ZqXAFCvym4jrGozdRg][The Elephant Graveyard]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UC3cpN6gcJQqcCM6mxRUo_dA][Wendigoon]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCm22FAXZMw1BaWeFszZxUKw][Kitboga]]
-*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCxSwqqnJp9HsW0hBrHcp1FQ][Flesh Simulator]]
diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org
index 04c6ac7..56e2bf9 100644
--- a/Emacs/.config/emacs/config.org
+++ b/Emacs/.config/emacs/config.org
@@ -15,6 +15,7 @@
Welcome to my Emacs configuration. You may be confused by the fact
it's a readable document with prose; this file serves as both
documentation *and* code. Here's an example of some Emacs Lisp code:
+
#+begin_src emacs-lisp
;;; config.el --- Compiled configuration from config.org -*- lexical-binding: t; -*-
@@ -270,9 +271,8 @@ forcefully adjust the font size.
(defun +oreo/font-reset (&optional theme)
(let ((font-size (thread-first
- (pcase (system-name)
- ("rhmaiden" 140)
- (_ 120))
+ (system-name)
+ (pcase ("rhmaiden" 140) (_ 120))
(* (+oreo/--font-multiplier))
floor)))
(set-face-attribute 'default nil :height font-size)
@@ -429,6 +429,7 @@ set of examples on how to use general.
"SPC" #'execute-extended-command
"R" #'revert-buffer
":" (proc-int (switch-to-buffer "*scratch*"))
+ ";" #'eval-expression
"!" #'async-shell-command
"h" #'help-command)
@@ -733,8 +734,8 @@ vertico for specific forms.
*** Embark
I'm very late to the party here - mostly because I didn't see much
point in this. However, after seeing that [[*empv][empv]] had some
-embark bindings for cool behaviours (such as altering playlists) I had
-to try it out - and I was not disappointed.
+embark bindings for cool behaviours (such as moving tracks around on
+the live playlist) I had to try it out - and I was not disappointed.
~embark-act~ is the entry point to using embark, and you can use it
basically anywhere to great effect. Searching a buffer via
@@ -765,7 +766,7 @@ embark act more like how you wish, which I've barely touch on here.
(side . bottom)
(window-height . 0.25)
(window-parameters (mode-line-format . none)))
- embark-prompter 'embark-completing-read-prompter
+ embark-prompter 'embark-keymap-prompter
embark-indicators '(embark-highlight-indicator)
embark-help-key "?"
embark-keymap-prompter-key "#"
@@ -788,7 +789,13 @@ search system.
:init
(setq consult-preview-excluded-buffers nil
consult-preview-excluded-files '("\\`/[^/|:]+:")
- consult-preview-key "M-'")
+ consult-preview-key 'any
+ consult-ripgrep-args "rg --null --line-buffered --color=never \
+ --max-columns=1000 --path-separator / \
+ --smart-case --no-heading \
+ --with-filename --line-number \
+ --search-zip --hidden"
+ consult-fd-args "fd --full-path --color=never -H")
:general
([remap imenu] #'consult-imenu
[remap switch-to-buffer] #'consult-buffer
@@ -796,7 +803,11 @@ search system.
(leader
"'" #'consult-register)
(search-leader
- "s" #'consult-line)
+ "s" #'consult-line
+ "r" #'consult-ripgrep
+ "f" #'consult-fd
+ "o" #'consult-org-agenda
+ "e" #'consult-compile-error)
:config
(with-eval-after-load "vertico-multiform"
(add-multiple-to-list vertico-multiform-commands
@@ -949,25 +960,20 @@ other themes in a list.
:hook (after-init-hook . +oreo/load-theme)
:init
(setq custom-theme-directory (concat user-emacs-directory "elisp/"))
- (defvar +oreo/theme-list `(personal-solarized tsdh-light))
+ (defvar +oreo/theme-list `(personal-solarized leuven))
(defvar +oreo/theme 0)
:config
(defun +oreo/load-theme ()
"Load `+oreo/theme', disabling all other themes to reduce conflict."
(mapc #'disable-theme custom-enabled-themes)
- (cl-loop
- for theme in +oreo/theme-list
- for i from 0
- if (not (= i +oreo/theme))
- do (disable-theme theme))
(load-theme (nth +oreo/theme +oreo/theme-list) t))
(defun +oreo/switch-theme ()
"Flip between different themes set in `+oreo/theme-alist'."
- (setq +oreo/theme (mod (+ 1 +oreo/theme) (length +oreo/theme-list)))
- (+oreo/load-theme))
-
- (+oreo/load-theme))
+ (thread-last (length +oreo/theme-list)
+ (mod (+ 1 +oreo/theme))
+ (setq +oreo/theme))
+ (+oreo/load-theme)))
#+end_src
** Startup screen
The default startup screen is quite bad in all honesty. While for a
@@ -1130,10 +1136,16 @@ I also setup the ~pixel-scroll-mode~ to make scrolling nicer looking.
(pixel-scroll-precision-mode t))
#+end_src
** Display line numbers
-I don't really like line numbers, I find them similar to
-[[*Fringes][fringes]] (useless space), but at least it provides some
-information. Sometimes it can help with doing repeated commands so a
-toggle option is necessary.
+Line numbers are nice - not for referencing specific lines by hand
+(why not use [[*compile-mode][compile-mode]] or ~M-x goto-line~?) but
+for relative vim motions: for example, d3j deletes 3 lines down and
+having the number of lines directly in front of you can be invaluable.
+
+2025-06-02: there's a specific option,
+~display-line-numbers-width-start~, which when set to ~t~
+automatically calculates the maximum width required to display all
+line numbers. This solves all the weird artifacting issues I was
+having with really large documents (such as this one).
#+begin_src emacs-lisp
(use-package display-line-numbers
@@ -1144,7 +1156,8 @@ toggle option is necessary.
(mode-leader
"l" #'display-line-numbers-mode)
:init
- (setq-default display-line-numbers-type 'relative))
+ (setq-default display-line-numbers-type 'relative
+ display-line-numbers-width-start t))
#+end_src
** Pulsar
Similar to how [[*Evil goggles][Evil goggles]] highlights Evil
@@ -1965,7 +1978,6 @@ most distribution nowadays.
:general
(search-leader
"g" #'grep-this-file
- "c" #'grep-config-file
"d" #'rgrep)
(nmmap
:keymaps 'grep-mode-map
@@ -1982,23 +1994,18 @@ most distribution nowadays.
;; Without this wgrep doesn't work properly
(evil-set-initial-state 'grep-mode 'normal)
- (defun grep-file (query filename)
- (grep (format "grep --color=auto -nIiHZEe \"%s\" -- %s"
- query filename)))
+ (defmacro grep-file (query filename)
+ `(grep (format "grep --color=auto -nIiHE --null -e \"%s\" %s"
+ ,query ,filename)))
(defun grep-this-file ()
(interactive)
- (let ((query (read-string "Search for: ")))
- (if (buffer-file-name (current-buffer))
- (grep-file query (buffer-file-name (current-buffer)))
- (let ((temp-file (make-temp-file "temp-grep")))
- (write-region (point-min) (point-max) temp-file)
- (grep-file query temp-file)))))
-
- (defun grep-config-file ()
- (interactive)
- (let ((query (read-string "Search for: " "^[*]+ .*")))
- (grep-file query (concat user-emacs-directory "config.org")))))
+ (let ((query (read-string "Search for: "))
+ (filename (or (buffer-file-name (current-buffer))
+ (let ((temp-file (make-temp-file "temp-grep")))
+ (write-region (point-min) (point-max) temp-file)
+ temp-file))))
+ (grep-file query filename))))
#+end_src
*** rg
#+begin_src emacs-lisp
@@ -2012,7 +2019,7 @@ most distribution nowadays.
(window-height . 0.35))
:general
(search-leader
- "r" #'rg)
+ "R" #'rg-menu)
(:keymaps 'project-prefix-map
"t" #'+rg/project-todo)
(nmmap
@@ -2093,14 +2100,14 @@ to elfeed for loading the system.
(funcall option url)))))
#+end_src
*** Elfeed-org
+A small self-written package to load an org file as a set of elfeed
+feeds.
#+begin_src emacs-lisp
(use-package elfeed-org
:load-path "elisp/"
:after elfeed
:init
- (thread-last "elfeed/feeds.org"
- no-littering-expand-etc-file-name
- (setq elfeed-org/file))
+ (setq elfeed-org/file (concat org-directory "feeds.org"))
:config
(elfeed-org))
#+end_src
@@ -2705,11 +2712,10 @@ description I give won't do it justice.
#+begin_src emacs-lisp
(use-package aggressive-indent
:straight t
- :hook (emacs-lisp-mode-hook . aggressive-indent-mode)
- :hook (scheme-mode-hook . aggressive-indent-mode)
- :hook (lisp-mode-hook . aggressive-indent-mode))
+ :hook ((scheme-mode-hook lisp-mode-hook emacs-lisp-mode-hook)
+ . aggressive-indent-mode))
#+end_src
-** Compilation
+** compile-mode
Compilation mode is an incredibly useful subsystem of Emacs which
allows one to run arbitrary commands. If those commands produce
errors (particularly errors that have a filename, column and line)
@@ -2758,12 +2764,12 @@ so you can actually read the text.
(add-hook 'compilation-filter-hook #'ansi-color-compilation-filter))
#+end_src
** xref
-Find definitions, references and general objects using tags without
+Find definitions, references, and general objects using TAGS without
external packages. Provided out of the box with Emacs, but requires a
way of generating a =TAGS= file for your project (look at
-[[*Project.el][Project.el]] for my way of doing so). A critical
-component in a minimal setup for programming without heavier systems
-like [[*Eglot][Eglot]].
+[[*Project.el][Project.el]] for my way of doing so). The heaviest
+lifter in a minimal setup for programming without more extensive
+systems like [[*Eglot][Eglot]].
#+begin_src emacs-lisp
(use-package xref
@@ -2792,11 +2798,10 @@ like [[*Eglot][Eglot]].
#+end_src
** devdocs
When man pages aren't enough, you need some documentation lookup
-system (basically whenever your using anything but C/C++/Bash).
-[[https://devdocs.io][Devdocs]] is a great little website that
-provides a ton of documentation sets. There's an Emacs package for it
-which works well and downloads documentation sets to my machine, which
-is nice.
+system. [[https://devdocs.io][Devdocs]] is a great little website
+that provides a ton of documentation sets. There's an Emacs package
+for it which works well and downloads documentation sets to my
+machine, which is nice.
#+begin_src emacs-lisp
(use-package devdocs
@@ -2808,7 +2813,7 @@ is nice.
#+end_src
** rainbow-delimiters
Makes colours delimiters (parentheses) based on their depth in an
-expression. Rainbow flag in your Lisp source code.
+expression. LGBTQIA+ flag in your Lisp source code.
#+begin_src emacs-lisp
(use-package rainbow-delimiters
@@ -2817,7 +2822,8 @@ expression. Rainbow flag in your Lisp source code.
:general
(mode-leader "r" #'rainbow-delimiters-mode)
:hook
- ((lisp-mode-hook emacs-lisp-mode-hook racket-mode-hook) . rainbow-delimiters-mode))
+ ((lisp-mode-hook emacs-lisp-mode-hook racket-mode-hook)
+ . rainbow-delimiters-mode))
#+end_src
** Licensing
Loads [[file:elisp/license.el][license.el]] for inserting licenses.
@@ -3129,10 +3135,9 @@ todo file directly.
:defer t
:init
(setq
- org-default-notes-file (concat org-directory "todo.org")
org-capture-templates
'(("t" "Todo" entry
- (file "")
+ (file "general.org")
"* TODO %?
%T
%a")
@@ -4488,8 +4493,7 @@ with abstracting a few things away.
(use-package abbrev
:defer t
:hook
- (prog-mode-hook . abbrev-mode)
- (text-mode-hook . abbrev-mode)
+ ((prog-mode-hook text-mode-hook) . abbrev-mode)
:init
(defmacro +abbrev/define-abbrevs (abbrev-table &rest abbrevs)
`(progn
@@ -4513,7 +4517,11 @@ with abstracting a few things away.
("smon"
(format-time-string "%B" (current-time)))
("swho"
- (format "%s <%s>" user-full-name user-mail-address))))
+ (format "%s <%s>" user-full-name user-mail-address))
+ ("stodo"
+ (thread-last (current-time)
+ (format-time-string "%Y-%m-%d %H:%M")
+ (format "TODO(%s)[%s]:" user-login-name)))))
#+end_src
** Amx
Amx is a fork of Smex that works to enhance the
diff --git a/Emacs/.config/emacs/early-init.el b/Emacs/.config/emacs/early-init.el
index 6e35715..c136fd8 100644
--- a/Emacs/.config/emacs/early-init.el
+++ b/Emacs/.config/emacs/early-init.el
@@ -56,7 +56,7 @@
(vertical-scroll-bars . nil)
(left-fringe . 0)
(right-fringe . 0)
- (alpha . (90 80)))
+ (alpha . (80 70)))
menu-bar-mode nil
tool-bar-mode nil
scroll-bar-mode nil)
diff --git a/Emacs/.config/emacs/elisp/elfeed-org.el b/Emacs/.config/emacs/elisp/elfeed-org.el
index 2b68acc..4416926 100644
--- a/Emacs/.config/emacs/elisp/elfeed-org.el
+++ b/Emacs/.config/emacs/elisp/elfeed-org.el
@@ -29,11 +29,12 @@
(defun elfeed-org/--parse-link (context)
(thread-last (org-element-property :title context)
search-forward)
- (let ((title-context (org-element-context)))
- (org-element-property :raw-link title-context)))
+ (org-element-property :raw-link (org-element-context)))
(defun elfeed-org/--parse-tags ()
- (mapcar #'intern (org-get-tags)))
+ (thread-last
+ (org-get-tags)
+ (mapcar #'intern)))
(defun elfeed-org/--parse-headline ()
(if-let* ((ctx (org-element-context))
@@ -43,14 +44,15 @@
nil))
(defun elfeed-org/--parse-headlines ()
- (cl-remove-if
- #'null
- (org-map-entries #'elfeed-org/--parse-headline t)))
+ (thread-last
+ (org-map-entries #'elfeed-org/--parse-headline t)
+ (cl-remove-if #'null)))
(defun elfeed-org ()
- (setq elfeed-feeds
- (with-current-buffer (find-file-noselect elfeed-org/file)
- (elfeed-org/--parse-headlines))))
+ (thread-last
+ (elfeed-org/--parse-headlines)
+ (with-current-buffer (find-file-noselect elfeed-org/file))
+ (setq elfeed-feeds)))
(provide 'elfeed-org)
;;; elfeed-org.el ends here
diff --git a/Emacs/.config/emacs/elisp/eshell-additions.el b/Emacs/.config/emacs/elisp/eshell-additions.el
index a9362db..2d53610 100644
--- a/Emacs/.config/emacs/elisp/eshell-additions.el
+++ b/Emacs/.config/emacs/elisp/eshell-additions.el
@@ -41,14 +41,23 @@
"Change to directory `project-root'"
(if (project-current)
(eshell/cd (list (project-root (project-current))))
+ (setq eshell-last-command-status 1)
(eshell/echo
(format "[%s]: No project in current directory"
(propertize "Error" 'font-lock-face '(:foreground "red"))))))
(defun eshell/sudo-switch (&rest args)
- "Switch to a tramp connection sudo in the current directory"
- (let ((wrapped-dir (concat "/sudo::" default-directory)))
- (eshell/cd wrapped-dir)))
+ "Switch to and from administrative (sudo) mode in Eshell.
+Uses tramp to figure out if we're in sudo mode or not. "
+ (let ((user (file-remote-p default-directory 'user)))
+ (cond
+ ((null user)
+ (let ((wrapped-dir (concat "/sudo::" default-directory)))
+ (eshell/cd wrapped-dir)))
+ ((string= user "root")
+ (thread-last 'localname
+ (file-remote-p default-directory)
+ eshell/cd)))))
;; Additional functions
(defun +eshell/at-cwd (&optional arg)
diff --git a/Emacs/.config/emacs/elisp/eshell-prompt.el b/Emacs/.config/emacs/elisp/eshell-prompt.el
index dafd8ea..af5c55f 100644
--- a/Emacs/.config/emacs/elisp/eshell-prompt.el
+++ b/Emacs/.config/emacs/elisp/eshell-prompt.el
@@ -19,25 +19,29 @@
;;; Commentary:
-;; We provide a function +eshell-prompt which generates a prompt on
+;; We provide a function ep which generates a prompt on
;; demand.
;;; Code:
-(defvar +eshell-prompt/user-prompt "𝜆> "
+(defvar ep/user-prompt " λ "
"Prompt for user to input.")
-(defvar +eshell-prompt/dir-colour "deepskyblue")
-(defvar +eshell-prompt/success-colour "forestgreen")
-(defvar +eshell-prompt/failure-colour "red")
+(defvar ep/dir-colour "deepskyblue")
+(defvar ep/success-colour "forestgreen")
+(defvar ep/failure-colour "red")
+(defvar ep/branch-name-colour "LightSalmon")
+(defvar ep/pipe-colour "green2")
+(defvar ep/ahead-colour "dodger blue")
+(defvar ep/remote-colour "DarkGoldenrod")
-(defun +eshell-prompt/--colour-on-last-command ()
+(defun ep/--colour-on-last-command ()
"Returns an Emacs colour based on ESHELL-LAST-COMMAND-STATUS."
(if (zerop eshell-last-command-status)
- +eshell-prompt/success-colour
- +eshell-prompt/failure-colour))
+ ep/success-colour
+ ep/failure-colour))
-(defun +eshell-prompt/--git-remote-status ()
+(defun ep/--git-remote-status ()
"Returns a propertized string for the status of a repository
in comparison to its remote. 3 differing strings are returned
dependent on:
@@ -53,17 +57,17 @@ behind or ahead the local repository is."
(status (nth 3 branch-status))
(diff (cl-position "by" branch-status :test #'string=)))
(if (null diff)
- (propertize "=" 'font-lock-face `(:foreground ,+eshell-prompt/success-colour))
+ (propertize "=" 'font-lock-face `(:foreground ,ep/success-colour))
(let ((n (nth (+ 1 diff) branch-status)))
(concat
(cond
((string= status "ahead")
- (propertize "→" 'font-lock-face '(:foreground "dodger blue")))
+ (propertize "→" 'font-lock-face `(:foreground ,ep/ahead-colour)))
((string= status "behind")
- (propertize "←" 'font-lock-face '(:foreground "red"))))
+ (propertize "←" 'font-lock-face `(:foreground ,ep/failure-colour))))
n)))))
-(defun +eshell-prompt/--git-change-status ()
+(defun ep/--git-change-status ()
"Returns a propertized string for the condition of the worktree in
a repository. If there are no changes i.e. the worktree is clean
then a green tick is returned, but if there are changes then the
@@ -74,12 +78,13 @@ number of files affected are returned in red."
(if (= changed-files 0)
(propertize "✓"
'font-lock-face
- `(:foreground ,+eshell-prompt/success-colour))
+ `(:foreground ,ep/success-colour))
(propertize (number-to-string changed-files)
'font-lock-face
- `(:foreground ,+eshell-prompt/failure-colour)))))
+ `(:foreground ,ep/failure-colour)))))
-(defun +eshell-prompt/--git-branch-name ()
+(defun ep/--git-branch-name ()
+ "Get the branch name of the current working directory. W"
(let* ((branch-name (thread-last
(split-string (shell-command-to-string "git branch") "\n")
(cl-remove-if (lambda (s) (= (length s) 0)))
@@ -89,23 +94,34 @@ number of files affected are returned in red."
(cond
((null branch-name) nil)
((string= "(" (substring branch-name 0 1))
- (replace-regexp-in-string "\\(.*at \\)\\|)" "" branch-name))
+ (replace-regexp-in-string
+ "\n$" ""
+ (shell-command-to-string "git rev-parse --short HEAD")))
(t branch-name))))
-(defun +eshell-prompt/--git-status ()
+(defun ep/--git-status ()
"Returns a completely formatted string of
-form (BRANCH-NAME<CHANGES>[REMOTE-STATUS])."
- (let ((git-branch (+eshell-prompt/--git-branch-name)))
+ form (BRANCH-NAME<CHANGES>[REMOTE-STATUS])."
+ (let ((git-branch (ep/--git-branch-name)))
(if (null git-branch)
""
(format
- "(%s<%s>[%s])"
- git-branch
- (+eshell-prompt/--git-change-status)
- (+eshell-prompt/--git-remote-status)))))
-
-(defun +eshell-prompt/make-prompt ()
- (let ((git (+eshell-prompt/--git-status)))
+ "%s(%s)(%s)"
+ (propertize git-branch 'font-lock-face `(:foreground ,ep/branch-name-colour))
+ (ep/--git-remote-status)
+ (ep/--git-change-status)))))
+
+(defun ep/--user-and-remote ()
+ (if (file-remote-p default-directory)
+ (let ((user (file-remote-p default-directory 'user))
+ (host (file-remote-p default-directory 'host)))
+ (if user
+ (format "%s@%s " user host)
+ (concat host " ")))
+ ""))
+
+(defun ep/make-prompt ()
+ (let ((git (ep/--git-status)))
(mapconcat
(lambda (item)
(if (listp item)
@@ -115,15 +131,26 @@ form (BRANCH-NAME<CHANGES>[REMOTE-STATUS])."
'rear-nonsticky '(font-lock-face read-only))
item))
(list
+ `("┌──"
+ :foreground ,ep/pipe-colour)
"["
- `(,(abbreviate-file-name (eshell/pwd)) :foreground ,+eshell-prompt/dir-colour)
- "]"
+ `(,(ep/--user-and-remote)
+ :foreground ,ep/remote-colour)
+ `(,(abbreviate-file-name (tramp-file-local-name (eshell/pwd)))
+ :foreground ,ep/dir-colour)
(if (string= git "")
""
- (concat " " git))
+ (concat "]─[" git))
+ "]"
"\n"
- (list "𝜆> " ':foreground (+eshell-prompt/--colour-on-last-command))))))
+ `("└─>"
+ :foreground ,ep/pipe-colour)
+ (list ep/user-prompt ':foreground (ep/--colour-on-last-command))))))
(provide 'eshell-prompt)
;;; eshell-prompt.el ends here
+
+;; Local Variables:
+;; read-symbol-shorthands: (("ep" . "+eshell-prompt"))
+;; End:
diff --git a/Emacs/.config/emacs/elisp/personal-light-theme.el b/Emacs/.config/emacs/elisp/personal-light-theme.el
index c8e4f3e..d05f880 100644
--- a/Emacs/.config/emacs/elisp/personal-light-theme.el
+++ b/Emacs/.config/emacs/elisp/personal-light-theme.el
@@ -81,6 +81,19 @@
'(org-quote ((t (:slant italic))))
'(org-verbatim ((t (:foreground "red3"))))
'(query-replace ((t (:inherit (isearch)))))
+ '(rainbow-delimiters-base-error-face ((t (:extend t :foreground "white"
+ :background "red1"))))
+ '(rainbow-delimiters-depth-1-face ((t (:extend t :foreground "red"))))
+ '(rainbow-delimiters-depth-2-face ((t (:extend t :foreground "darkorange"))))
+ '(rainbow-delimiters-depth-3-face ((t (:extend t :foreground "yellow"))))
+ '(rainbow-delimiters-depth-4-face ((t (:extend t :foreground "green"))))
+ '(rainbow-delimiters-depth-5-face ((t (:extend t :foreground "DeepSkyBlue"))))
+ '(rainbow-delimiters-depth-6-face ((t (:extend t :foreground "purple"))))
+ '(rainbow-delimiters-depth-7-face ((t (:extend t :foreground "violet"))))
+ '(rainbow-delimiters-mismatched-face ((t (:extend t :foreground "white"
+ :background "red4"))))
+ '(rainbow-delimiters-unmatched-face ((t (:extend t :foreground "white"
+ :background "red3"))))
'(region ((t (:extend t :background "#C2D5E9"))))
'(secondary-selection ((((class color) (min-colors 88) (background light)) (:extend t :background "yellow1")) (((class color) (min-colors 88) (background dark)) (:extend t :background "SkyBlue4")) (((class color) (min-colors 16) (background light)) (:extend t :background "yellow")) (((class color) (min-colors 16) (background dark)) (:extend t :background "SkyBlue4")) (((class color) (min-colors 8)) (:extend t :foreground "black" :background "cyan")) (t (:inverse-video t))))
'(shadow ((((class color grayscale) (min-colors 88) (background light))