diff options
Diffstat (limited to '.emacs.d/modules/thanos-shells.el')
-rw-r--r-- | .emacs.d/modules/thanos-shells.el | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/.emacs.d/modules/thanos-shells.el b/.emacs.d/modules/thanos-shells.el deleted file mode 100644 index 57fd8dc..0000000 --- a/.emacs.d/modules/thanos-shells.el +++ /dev/null @@ -1,176 +0,0 @@ -;;; thanos-shell.el --- shells configuration -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -(setenv "EDITOR" "emacsclient -n") -(setenv "XDG_SESSION_TYPE" "x11") - -;; -(require 'pcomplete) -(require 'eshell) - -(setf eshell-visual-commands - '("vi" "vim" "screen" "tmux" "top" "htop" "less" - "more" "lynx" "links" "ncftp" "mutt" "pine" "tin" - "trn" "elm")) - -(require 'eat) -(add-hook 'eshell-mode-hook #'eat-eshell-visual-command-mode) -;; (add-hook 'eshell-mode-hook #'eat-eshell-mode) -(setf eat-term-name "xterm") - -;;;; doas completion -(defun pcomplete/doas () - "Completion rules for the `doas' command." - (let ((pcomplete-ignore-case t)) - (pcomplete-here (funcall pcomplete-command-completion-function)) - (while (pcomplete-here (pcomplete-entries))))) - -;;;; systemctl completion -(defcustom pcomplete-systemctl-commands - '("disable" "enable" "status" "start" "restart" "stop" "reenable" - "list-units" "list-unit-files") - "p-completion candidates for `systemctl' main commands" - :type '(repeat (string :tag "systemctl command")) - :group 'pcomplete) - -(defvar pcomplete-systemd-units - (split-string - (shell-command-to-string - "(systemctl list-units --all --full --no-legend;systemctl list-unit-files --full --no-legend)|while read -r a b; do echo \" $a\";done;")) - "p-completion candidates for all `systemd' units") - -(defvar pcomplete-systemd-user-units - (split-string - (shell-command-to-string - "(systemctl list-units --user --all --full --no-legend;systemctl list-unit-files --user --full --no-legend)|while read -r a b;do echo \" $a\";done;")) - "p-completion candidates for all `systemd' user units") - -(defun pcomplete/systemctl () - "Completion rules for the `systemctl' command." - (pcomplete-here (append pcomplete-systemctl-commands '("--user"))) - (cond ((pcomplete-test "--user") - (pcomplete-here pcomplete-systemctl-commands) - (pcomplete-here pcomplete-systemd-user-units)) - (t (pcomplete-here pcomplete-systemd-units)))) - -;;;; man completion -(defvar pcomplete-man-user-commands - (split-string - (shell-command-to-string - "apropos -s 1 .|while read -r a b; do echo \" $a\";done;")) - "p-completion candidates for `man' command") - -(defun pcomplete/man () - "Completion rules for the `man' command." - (pcomplete-here pcomplete-man-user-commands)) - -;; hut completion -(defcustom pcomplete-hut-commands - '("builds" "export" "git" "graphql" "lists" "help" "hg" - "init" "meta" "pages" "paste" "todo") - "p-completion candidates for `hut' main commands" - :type '(repeat (string :tag "hut command")) - :group 'pcomplete) - -(defun pcomplete/hut () - "Completion rules for `hut' command" - (pcomplete-here (append pcomplete-hut-commands))) - - -;; Setting eshell aliases -(defvar thanos/aliases - '((g . magit) - (gl . magit-log) - (gc . magit-clone) - (d . dired) - (o . find-file) - (oo . find-file-other-window) - (ll . (lambda () (eshell/ls '-lha))) - (eshell/clear . eshell/clear-scrollback))) - -(defun thanos/set-eshell-aliases (aliases) - "Set ALIASES as eshell aliases." - (mapc (lambda (alias) - (defalias (car alias) (cdr alias))) - aliases)) - -(add-hook 'eshell-mode-hook #'(lambda () (thanos/set-eshell-aliases thanos/aliases))) - -;; PATH -(defvar eshell-path-env (getenv "~/.local/bin")) - -(require 'eshell-git-prompt) - -;; customize multiline theme -(defun eshell-git-prompt-multiline () - "Eshell Git prompt inspired by spaceship-prompt." - (let (separator hr dir git git-dirty time sign command) - (setq separator (with-face " | " 'eshell-git-prompt-multiline-secondary-face)) - (setq hr (with-face (concat "\n" (make-string (/ (window-total-width) 2) ?─) "\n") 'eshell-git-prompt-multiline-secondary-face)) - (setq dir - (concat - (concat (abbreviate-file-name (eshell/pwd))))) - (setq git - (concat (with-face "⎇" 'eshell-git-prompt-exit-success-face) - (concat (eshell-git-prompt--branch-name)))) - (setq git-dirty - (when (eshell-git-prompt--branch-name) - (if (eshell-git-prompt--collect-status) - (with-face " ✎" 'eshell-git-prompt-modified-face) - (with-face " ✔" 'eshell-git-prompt-exit-success-face)))) - (setq time (with-face (format-time-string "%I:%M:%S %p") 'eshell-git-prompt-multiline-secondary-face)) - (setq sign - (if (= (user-uid) 0) - (with-face "\n#" 'eshell-git-prompt-multiline-sign-face) - (with-face "\nλ" 'eshell-git-prompt-multiline-sign-face))) - (setq command (with-face " " 'eshell-git-prompt-multiline-command-face)) - - - (eshell-git-prompt---str-read-only - (concat hr dir separator git git-dirty separator time sign command)))) - -(eshell-git-prompt-use-theme 'multiline) - -(eshell-syntax-highlighting-global-mode 1) - -(setq eshell-highlight-prompt t - eshell-term-name "emacs") - -;; Keybindings -(define-key global-map (kbd "C-c e") 'eshell) - -(require 'vterm) -(define-key global-map (kbd "C-c v") 'vterm) -(define-key vterm-mode-map (kbd "M-&") #'async-shell-command) - - -(provide 'thanos-shells) -;;; thanos-shells.el ends here |