(exec-path-from-shell-copy-env "SSH_AUTH_SOCK"))
#+end_src
-** Only one custom theme at a time
+** COMMENT Only one custom theme at a time
#+begin_src emacs-lisp
(defadvice load-theme (before clear-previous-themes activate)
(amin--leader-keys
"/" '(:ignore t :wk "search")
+ "a" '(:ignore t :wk "apps")
+ "a i" 'ielm
+
"b" '(:ignore t :wk "buffers")
"b k" 'kill-this-buffer
"b s" 'save-buffer
"e b" 'eval-buffer
"e r" 'eval-region
- "e e" 'shell-pop
-
"f" '(:ignore t :wk "files")
"F" '(:ignore t :wk "frames")
#+begin_src emacs-lisp
(use-package eshell
- :defer t
+ :defer 1
:commands eshell
:config
(eval-when-compile (defvar eshell-prompt-regexp))
:config (which-key-mode))
#+end_src
+** theme
+
+#+begin_src emacs-lisp
+(add-to-list 'custom-theme-load-path "~/.emacs.d/lisp")
+(load-theme 'tangomod t)
+#+end_src
+
** [[https://github.com/Malabarba/smart-mode-line][smart-mode-line]]
#+begin_src emacs-lisp
(use-package smart-mode-line
:config
(sml/setup)
- ;; (sml/apply-theme 'light)
+ (sml/apply-theme 'light)
(remove-hook 'display-time-hook 'sml/propertize-time-string))
#+end_src
+** theme helper functions
+
+#+begin_src emacs-lisp
+(defun amin/light ()
+ "Load light theme(s)."
+ (interactive)
+ (progn
+ (mapc #'disable-theme custom-enabled-themes)
+ (load-theme 'tangomod t)
+ (sml/apply-theme 'light)))
+
+(defun amin/dark ()
+ "Load dark theme(s)."
+ (interactive)
+ (progn
+ (mapc #'disable-theme custom-enabled-themes)
+ (load-theme 'tangomod-dark t)
+ (sml/apply-theme 'dark)))
+
+(amin--leader-keys
+ "t" '(:ignore t :wk "theme")
+ "t d" 'amin/dark
+ "t l" 'amin/light)
+#+end_src
+
** [[https://github.com/bbatsov/crux][crux]]
#+begin_src emacs-lisp
"h h p" 'helpful-at-point))
#+end_src
-** [[https://github.com/kyagi/shell-pop-el][shell-pop]]
+** [[https://github.com/knu/shell-toggle.el][shell-toggle]]
#+begin_src emacs-lisp
-(use-package shell-pop
- :defer 1
- :init
- (setq shell-pop-universal-key "C-c e"
- shell-pop-shell-type '("eshell" "*eshell*" (lambda nil (eshell)))))
+(use-package shell-toggle
+ :after eshell
+ :general (amin--leader-keys "a s" 'amin/shell-toggle)
+ :bind ("C-c e" . amin/shell-toggle)
+ :config
+ (defun amin/shell-toggle (make-cd)
+ "Toggle between the shell buffer and whatever buffer you are editing.
+With a prefix argument MAKE-CD also insert a \"cd DIR\" command
+into the shell, where DIR is the directory of the current buffer.
+
+When called in the shell buffer returns you to the buffer you were editing
+before calling this the first time.
+
+Options: `shell-toggle-goto-eob'"
+ (interactive "P")
+ ;; Try to decide on one of three possibilities:
+ ;; If not in shell-buffer, switch to it.
+ ;; If in shell-buffer, return to state before going to the shell-buffer
+ (if (eq (current-buffer) shell-toggle-shell-buffer)
+ (shell-toggle-buffer-return-from-shell)
+ (progn
+ (shell-toggle-buffer-goto-shell make-cd)
+ (if shell-toggle-full-screen-window-only (delete-other-windows)))))
+
+ ;; override to split horizontally instead
+ (defun shell-toggle-buffer-switch-to-other-window ()
+ "Switch to other window.
+If the current window is the only window in the current frame,
+create a new window and switch to it.
+
+\(This is less intrusive to the current window configuration than
+`switch-buffer-other-window')"
+ (let ((this-window (selected-window)))
+ (other-window 1)
+ ;; If we did not switch window then we only have one window and need to
+ ;; create a new one.
+ (if (eq this-window (selected-window))
+ (progn
+ (split-window-horizontally)
+ (other-window 1)))))
+
+ :custom
+ (shell-toggle-launch-shell 'shell-toggle-eshell))
#+end_src
** [[https://github.com/EricCrosson/unkillable-scratch][unkillable-scratch]]
(nnimap-server-port 143)
(nnimap-authenticator plain)
(nnimap-user "abandali@uwaterloo.ca")))
- gnus-message-archive-group "nnimap:Sent"
+ gnus-message-archive-group "nnimap+amin:Sent"
gnus-parameters
'(("gnu.*"
(gcc-self . t)))