X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=af912377b53df3f90032f278424ba94b3b724263;hb=88348af87875787087dae27533895501730a08d2;hp=90b3ad1a80b6e14521ab6695e1a6df56f15c10db;hpb=225141d6f7444d2bc6cbff3b3998d463e6ecacb9;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 90b3ad1..af91237 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -824,11 +824,8 @@ extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-em #+END_SRC * Magit - [[https://github.com/magit/magit][Magit]] is a very cool git interface on Emacs. - and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github.com/abo-abo/oremacs/blob/c5cafdcebc88afe9e73cc8bd40c49b70675509c7/modes/ora-nextmagit.el][here]] - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package magit :ensure t @@ -840,6 +837,7 @@ and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github magit-staged-section-map)) (define-key map "j" 'magit-section-forward) (define-key map "k" 'magit-section-backward) + (define-key map "D" 'magit-discard-file) (define-key map "n" nil) (define-key map "p" nil) (define-key map "v" 'recenter-top-bottom) @@ -1188,63 +1186,38 @@ Occur search key bindings #+END_SRC * Eshell - -Eshell alias - +*** Eshell alias #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defalias 'e 'ido-find-file) (defalias 'ff 'ido-find-file) (defalias 'ee 'ido-find-file-other-window) - #+END_SRC -Quickly start eshll in split window below, refer [[http://www.howardism.org/Technical/Emacs/eshell-fun.html][eshell-here]] - +*** Eshell erase buffer #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defun eshell-x () - (insert "exit") - (eshell-send-input) - (delete-window)) - - (defun eshell-here () - "Opens up a new shell in the directory associated with the - current buffer's file. The eshell is renamed to match that - directory to make multiple eshell windows easier." + (defun sd/eshell-clear-buffer () + "Clear eshell buffer" (interactive) - (let* ((parent (if (buffer-file-name) - (file-name-directory (buffer-file-name)) - default-directory)) - (height (/ (window-total-height) 3)) - (name (car (last (split-string parent "/" t)))) - (eshell-name (concat "*eshell: " name "*"))) - (split-window-vertically (- height)) - (other-window 1) - (if (get-buffer eshell-name) - (progn - (message "buffer exist") - (switch-to-buffer eshell-name)) - (progn - (eshell "new") - (rename-buffer eshell-name) - - (insert (concat "ls")) - (eshell-send-input))))) + (let ((inhibit-read-only t)) + (erase-buffer) + (eshell-send-input))) - (global-unset-key (kbd "M-`")) - (global-set-key (kbd "M-`") #'eshell-here) + (add-hook 'eshell-mode-hook (lambda () + (local-set-key (kbd "C-l") 'sd/eshell-clear-buffer))) #+END_SRC +*** Toggle Eshell +Toggle an eshell in split window below, refer [[http://www.howardism.org/Technical/Emacs/eshell-fun.html][eshell-here]] #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defun sd/window-has-eshell () "Check if current windows list has a eshell buffer, and return the window" (interactive) (let ((ret nil)) - (dolist (window (window-list)) - (let ((modename (with-current-buffer (window-buffer window) - major-mode))) - (if (equal modename 'eshell-mode) - (setq ret window)))) + (walk-windows (lambda (window) + (if (equal (with-current-buffer (window-buffer window) major-mode) + 'eshell-mode) + (setq ret window))) + nil nil) ret)) (defun sd/toggle-eshell-here () @@ -1252,18 +1225,23 @@ Quickly start eshll in split window below, refer [[http://www.howardism.org/Tech (interactive) (if (sd/window-has-eshell) (if (equal major-mode 'eshell-mode) - (delete-window) + (progn + (if (equal (length (window-list)) 1) + (mode-line-other-buffer) + (delete-window))) (select-window (sd/window-has-eshell))) (progn - (split-window-vertically (- (/ (window-total-height) 3))) - (other-window 1) - (unless (and (boundp 'eshell-buffer-name) (get-buffer eshell-buffer-name)) - (eshell)) - (switch-to-buffer eshell-buffer-name) - (goto-char (point-max)) - (eshell-kill-input) - (insert (format "cd %s" default-directory)) - (eshell-send-input)))) + (let ((dir default-directory)) + + (split-window-vertically (- (/ (window-total-height) 3))) + (other-window 1) + (unless (and (boundp 'eshell-buffer-name) (get-buffer eshell-buffer-name)) + (eshell)) + (switch-to-buffer eshell-buffer-name) + (goto-char (point-max)) + (eshell-kill-input) + (insert (format "cd %s" dir)) + (eshell-send-input))))) (global-unset-key (kbd "M-`")) (global-set-key (kbd "M-`") 'sd/toggle-eshell-here)