diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-06-03 00:34:19 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-06-03 00:34:19 +0100 |
commit | 4cabfc0c8f91332da2d1cc4f10b4d8a5dd637606 (patch) | |
tree | c745772d53454efca0bf07a27a507bfde5a52459 /Emacs/.config | |
parent | a60e03f7976177fa3b06528fe754f7e62a604cc9 (diff) | |
download | dotfiles-4cabfc0c8f91332da2d1cc4f10b4d8a5dd637606.tar.gz dotfiles-4cabfc0c8f91332da2d1cc4f10b4d8a5dd637606.tar.bz2 dotfiles-4cabfc0c8f91332da2d1cc4f10b4d8a5dd637606.zip |
Updates, loads of updates!
Diffstat (limited to 'Emacs/.config')
-rw-r--r-- | Emacs/.config/emacs/.config/elfeed/feeds.org | 38 | ||||
-rw-r--r-- | Emacs/.config/emacs/config.org | 132 | ||||
-rw-r--r-- | Emacs/.config/emacs/early-init.el | 2 | ||||
-rw-r--r-- | Emacs/.config/emacs/elisp/elfeed-org.el | 20 | ||||
-rw-r--r-- | Emacs/.config/emacs/elisp/eshell-additions.el | 15 | ||||
-rw-r--r-- | Emacs/.config/emacs/elisp/eshell-prompt.el | 89 | ||||
-rw-r--r-- | Emacs/.config/emacs/elisp/personal-light-theme.el | 13 |
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)) |