[[https://github.com/magit/magit][Magit]] is a very cool git interface on Emacs.
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+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
- :commands magit-status magit-blame)
-
-#+END_SRC
-
-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
- (dolist (map (list magit-status-mode-map
- magit-log-mode-map
- magit-diff-mode-map
- magit-staged-section-map))
- (define-key map "j" 'magit-section-forward)
- (define-key map "k" 'magit-section-backward)
- (define-key map "n" nil)
- (define-key map "p" nil)
- (define-key map "v" 'recenter-top-bottom)
- (define-key map "i" 'magit-section-toggle))
+ :commands magit-status magit-blame
+ :config
+ (dolist (map (list magit-status-mode-map
+ magit-log-mode-map
+ magit-diff-mode-map
+ magit-staged-section-map))
+ (define-key map "j" 'magit-section-forward)
+ (define-key map "k" 'magit-section-backward)
+ (define-key map "n" nil)
+ (define-key map "p" nil)
+ (define-key map "v" 'recenter-top-bottom)
+ (define-key map "i" 'magit-section-toggle)))
#+END_SRC
* IDO & SMEX
Quickly start eshll 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 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 eshell-x ()
+ ;; (insert "exit")
+ ;; (eshell-send-input)
+ ;; (delete-window))
+
+ ;; (defun sd/toggle-eshell ()
+ ;; "Open a eshell windows vertically"
+ ;; (interactive)
+ ;; (if 1
+ ;; (message "true")
+ ;; (progn
+ ;; (split-window-vertically (- (/ (window-total-height) 3)))
+ ;; (other-window 1)
+ ;; (switch-to-buffer eshell-buffer-name)
+ ;; (goto-char (point-max))
+ ;; (eshell-kill-input)
+ ;; (insert (format "cd %s" default-directory))
+ ;; (eshell-send-input)
+ ;; (goto-char (point-max))
+ ;; (insert (concat "ls"))
+ ;; (eshell-send-input))))
+ ;; (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."
+ ;; (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)))))
+
+ ;; (global-unset-key (kbd "M-`"))
+ ;; (global-set-key (kbd "M-`") #'eshell-here)
+#+END_SRC
+
+#+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))))
+ ret))
+
+ (defun sd/toggle-eshell-here ()
+ "Toggle a eshell buffer vertically"
(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"))
+ (if (sd/window-has-eshell)
+ (if (equal major-mode 'eshell-mode)
+ (delete-window)
+ (select-window (sd/window-has-eshell)))
+ (progn
+ (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-`") #'eshell-here)
+ (global-set-key (kbd "M-`") 'sd/toggle-eshell-here)
#+END_SRC
* Misc Settings
(interactive)
(split-window-below)
(windmove-down))
- "horz" :exit)
+ "horz" :exit t)
("o" delete-other-windows "one" :exit t)
("a" ace-window "ace")
("s" ace-swap-window "swap")