From f418d17001a72ee0cce8ac84dc5c56c919b0f98d Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Thu, 13 Jun 2024 00:55:25 +0100 Subject: (Emacs/config|elisp)~rework Eshell Now I have separate modules for the additional new functions I introduced for eshell and for the prompt function I made. Cleans up the configuration a bit and makes it easier to examine those files on their own, which I expect to grow. --- Emacs/.config/emacs/elisp/eshell-additions.el | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Emacs/.config/emacs/elisp/eshell-additions.el (limited to 'Emacs/.config/emacs/elisp/eshell-additions.el') diff --git a/Emacs/.config/emacs/elisp/eshell-additions.el b/Emacs/.config/emacs/elisp/eshell-additions.el new file mode 100644 index 0000000..94c948f --- /dev/null +++ b/Emacs/.config/emacs/elisp/eshell-additions.el @@ -0,0 +1,57 @@ +;;; eshell-additions.el --- Some aliases for Eshell -*- lexical-binding: t; -*- + +;; Copyright (C) 2024 Aryadev Chavali + +;; Author: Aryadev Chavali +;; 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 version 2 of the License + +;; 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 . + +;;; Commentary: + +;; + +;;; Code: + +(autoload #'eshell/cd "eshell") +(autoload #'eshell/echo "eshell") +(autoload #'eshell/send-input "eshell") + +;; Aliases +(defun eshell/goto (&rest args) + "Use `read-directory-name' to change directories" + (eshell/cd (list (read-directory-name "Directory?: ")))) + +(defun eshell/project-root (&rest args) + "Change to directory `project-root'" + (if (project-current) + (eshell/cd (list (project-root (project-current)))) + (let ((error-msg (propertize "Error" 'font-lock-face + '(:foreground "red")))) + (eshell/echo + (format "[%s]: No project in current directory" error-msg))))) + +;; Additional functions +(defun +eshell/at-cwd () + "Open an instance of eshell at the current working directory." + (interactive) + (let ((dir (if buffer-file-name + (file-name-directory buffer-file-name) + default-directory)) + (buf (eshell))) + (with-current-buffer buf + (eshell/cd dir) + (eshell-send-input)))) + +(provide 'eshell-additions) +;;; eshell-additions.el ends here -- cgit v1.2.3-13-gbd6f