X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=91b18bd09a42e1df6980d0a2ab8982fcd1eba9c7;hb=d75462c13eb1d5a5ca2772446df7a8161f924257;hp=e7e50e19d8564f088f9cf07527289be0ebc0c3b0;hpb=7a469b29513376efbff139339d4d66c3d0599369;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index e7e50e1..91b18bd 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -827,26 +827,23 @@ extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-em [[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 @@ -1205,37 +1202,87 @@ Eshell alias 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")) - (eshell-send-input))))) + (if (sd/window-has-eshell) + (if (equal major-mode 'eshell-mode) + (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)))) (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 @@ -1323,7 +1370,7 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex (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")