Commit ec763f3d771c

Vincent Demeester <vincent@sbr.pm>
2017-05-13 12:45:01
Add way more custom perspective (and a shortcut to tangle the config)
Next step would be to automate it, i.e. define a list somewhere (either dynamic or not) and have the configuration generate custom keybindings automagically 👼 Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 1bda8c8
Changed files (2)
.emacs.d/emacs.el
@@ -452,14 +452,27 @@
 
 (use-package perspective
   :ensure t
-  :bind* (("M-m SPC s" . persp-switch)
+  :bind* (("M-m SPC c" . persp-switch)
     ("M-m SPC n" . persp-next)
     ("M-m SPC p" . persp-prev)
     ("M-m SPC r" . persp-rename)
     ("M-m SPC k" . pers-kill)
-    ("M-m SPC o" . custom-persp/org)
+    ("M-m SPC o o" . custom-persp/org)
+    ("M-m SPC o d d" . custom-persp/org-docker)
+    ("M-m SPC o d p" . custom-persp/org-docker-pipeline)
+    ("M-m SPC o m" . custom-persp/org-moby)
+    ("M-m SPC s d d" . custom-persp/magit-docker)
+    ("M-m SPC s d p" . custom-persp/magit-docker-pipeline)
+    ("M-m SPC s d i i" . custom-persp/magit-docker-infrakit)
+    ("M-m SPC s d i d" . custom-persp/magit-docker-infrakit-do)
+    ("M-m SPC s d i g" . custom-persp/magit-docker-infrakit-gcp)
+    ("M-m SPC s l" . custom-persp/magit-linuxkit)
     ("M-m SPC d d" . custom-persp/docker)
-    ("M-m SPC d p" . custom-persp/pipeline))
+    ("M-m SPC d p" . custom-persp/docker-pipeline)
+    ("M-m SPC d i i" . custom-persp/docker-infrakit)
+    ("M-m SPC d i d" . custom-persp/docker-infrakit-do)
+    ("M-m SPC d i g" . custom-persp/docker-infrakit-gcp)
+    ("M-m SPC l" . custom-persp/linuxkit))
   :config
   (persp-mode t)
   (defmacro custom-persp (name &rest body)
@@ -472,14 +485,66 @@
     (interactive)
     (custom-persp "org"
                   (find-file (expand-file-name "todos/personal.org" org-root-directory))))
+  (defun custom-persp/org-docker ()
+    (interactive)
+    (custom-persp "org-docker"
+                  (find-file (expand-file-name "todos/docker.org" org-root-directory))))
+  (defun custom-persp/org-docker-pipeline ()
+    (interactive)
+    (custom-persp "org-pipeline"
+                  (find-file (expand-file-name "todos/docker-pipeline.org" org-root-directory))))
+  (defun custom-persp/org-moby ()
+    (interactive)
+    (custom-persp "org-moby"
+                  (find-file (expand-file-name "todos/moby.org" org-root-directory))))
   (defun custom-persp/docker ()
     (interactive)
     (custom-persp "docker"
                   (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/docker"))))
-  (defun custom-persp/pipeline ()
+  (defun custom-persp/docker-pipeline ()
     (interactive)
-    (custom-persp "docker"
+    (custom-persp "pipeline"
                   (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/pipeline"))))
+  (defun custom-persp/docker-infrakit ()
+    (interactive)
+    (custom-persp "infrakit"
+                  (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit"))))
+  (defun custom-persp/docker-infrakit-do ()
+    (interactive)
+    (custom-persp "infrakit.digitalocean"
+                  (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit.digitalocean"))))
+  (defun custom-persp/docker-infrakit-gcp ()
+    (interactive)
+    (custom-persp "infrakit.gcp"
+                  (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit.gcp"))))
+  (defun custom-persp/linuxkit ()
+    (interactive)
+    (custom-persp "linuxkit"
+                  (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/linuxkit/linuxkit"))))
+  (defun custom-persp/magit-docker ()
+    (interactive)
+    (custom-persp "magit-docker"
+              (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/docker"))))
+  (defun custom-persp/magit-docker-pipeline ()
+    (interactive)
+    (custom-persp "magit-pipeline"
+                  (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/pipeline"))))
+  (defun custom-persp/magit-docker-infrakit ()
+    (interactive)
+    (custom-persp "magit-infrakit"
+                  (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit"))))
+  (defun custom-persp/magit-docker-infrakit-do ()
+    (interactive)
+    (custom-persp "magit-infrakit.digitalocean"
+                  (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit.digitalocean"))))
+  (defun custom-persp/magit-docker-infrakit-gcp ()
+    (interactive)
+    (custom-persp "magit-infrakit.gcp"
+                  (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit.gcp"))))
+  (defun custom-persp/magit-linuxkit ()
+    (interactive)
+    (custom-persp "magit-linuxkit"
+                  (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/linuxkit/linuxkit"))))
   )
 
 (use-package apropospriate-theme
@@ -1705,8 +1770,8 @@ PRIORITY may be one of the characters ?A, ?B, or ?C."
 
 (use-package eshell
   :commands (eshell)
-  :bind* (("M-m SPC s" . sk/eshell-vertical)
-          ("M-m SPC S" . sk/eshell-horizontal))
+  :bind* (("M-m SPC e" . sk/eshell-vertical)
+          ("M-m SPC E" . sk/eshell-horizontal))
   :init
   (setq eshell-glob-case-insensitive t
         eshell-scroll-to-bottom-on-input 'this
@@ -1961,3 +2026,8 @@ PRIORITY may be one of the characters ?A, ?B, or ?C."
   (interactive)
   (message (format "Tangling %s" file-name))
   (tangle-config-async file-name))
+
+(defun tangle-emacs-config ()
+  (interactive)
+  (message (format "Tangling emacs config"))
+  (tangle-config-sync (substitute-env-in-file-name "$HOME/src/configs/emacs-config/.emacs.d/emacs.org")))
.emacs.d/emacs.org
@@ -1039,14 +1039,27 @@
    #+BEGIN_SRC emacs-lisp
      (use-package perspective
        :ensure t
-       :bind* (("M-m SPC s" . persp-switch)
-   	 ("M-m SPC n" . persp-next)
-   	 ("M-m SPC p" . persp-prev)
-   	 ("M-m SPC r" . persp-rename)
-   	 ("M-m SPC k" . pers-kill)
-   	 ("M-m SPC o" . custom-persp/org)
-   	 ("M-m SPC d d" . custom-persp/docker)
-   	 ("M-m SPC d p" . custom-persp/pipeline))
+       :bind* (("M-m SPC c" . persp-switch)
+         ("M-m SPC n" . persp-next)
+         ("M-m SPC p" . persp-prev)
+         ("M-m SPC r" . persp-rename)
+         ("M-m SPC k" . pers-kill)
+         ("M-m SPC o o" . custom-persp/org)
+         ("M-m SPC o d d" . custom-persp/org-docker)
+         ("M-m SPC o d p" . custom-persp/org-docker-pipeline)
+         ("M-m SPC o m" . custom-persp/org-moby)
+         ("M-m SPC s d d" . custom-persp/magit-docker)
+         ("M-m SPC s d p" . custom-persp/magit-docker-pipeline)
+         ("M-m SPC s d i i" . custom-persp/magit-docker-infrakit)
+         ("M-m SPC s d i d" . custom-persp/magit-docker-infrakit-do)
+         ("M-m SPC s d i g" . custom-persp/magit-docker-infrakit-gcp)
+         ("M-m SPC s l" . custom-persp/magit-linuxkit)
+         ("M-m SPC d d" . custom-persp/docker)
+         ("M-m SPC d p" . custom-persp/docker-pipeline)
+         ("M-m SPC d i i" . custom-persp/docker-infrakit)
+         ("M-m SPC d i d" . custom-persp/docker-infrakit-do)
+         ("M-m SPC d i g" . custom-persp/docker-infrakit-gcp)
+         ("M-m SPC l" . custom-persp/linuxkit))
        :config
        (persp-mode t)
        (defmacro custom-persp (name &rest body)
@@ -1059,14 +1072,66 @@
          (interactive)
          (custom-persp "org"
                        (find-file (expand-file-name "todos/personal.org" org-root-directory))))
+       (defun custom-persp/org-docker ()
+         (interactive)
+         (custom-persp "org-docker"
+                       (find-file (expand-file-name "todos/docker.org" org-root-directory))))
+       (defun custom-persp/org-docker-pipeline ()
+         (interactive)
+         (custom-persp "org-pipeline"
+                       (find-file (expand-file-name "todos/docker-pipeline.org" org-root-directory))))
+       (defun custom-persp/org-moby ()
+         (interactive)
+         (custom-persp "org-moby"
+                       (find-file (expand-file-name "todos/moby.org" org-root-directory))))
        (defun custom-persp/docker ()
          (interactive)
          (custom-persp "docker"
                        (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/docker"))))
-       (defun custom-persp/pipeline ()
+       (defun custom-persp/docker-pipeline ()
          (interactive)
-         (custom-persp "docker"
+         (custom-persp "pipeline"
                        (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/pipeline"))))
+       (defun custom-persp/docker-infrakit ()
+         (interactive)
+         (custom-persp "infrakit"
+                       (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit"))))
+       (defun custom-persp/docker-infrakit-do ()
+         (interactive)
+         (custom-persp "infrakit.digitalocean"
+                       (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit.digitalocean"))))
+       (defun custom-persp/docker-infrakit-gcp ()
+         (interactive)
+         (custom-persp "infrakit.gcp"
+                       (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit.gcp"))))
+       (defun custom-persp/linuxkit ()
+         (interactive)
+         (custom-persp "linuxkit"
+                       (find-file (substitute-env-in-file-name "$HOME/go/src/github.com/linuxkit/linuxkit"))))
+       (defun custom-persp/magit-docker ()
+         (interactive)
+         (custom-persp "magit-docker"
+   		(magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/docker"))))
+       (defun custom-persp/magit-docker-pipeline ()
+         (interactive)
+         (custom-persp "magit-pipeline"
+                       (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/pipeline"))))
+       (defun custom-persp/magit-docker-infrakit ()
+         (interactive)
+         (custom-persp "magit-infrakit"
+                       (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit"))))
+       (defun custom-persp/magit-docker-infrakit-do ()
+         (interactive)
+         (custom-persp "magit-infrakit.digitalocean"
+                       (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit.digitalocean"))))
+       (defun custom-persp/magit-docker-infrakit-gcp ()
+         (interactive)
+         (custom-persp "magit-infrakit.gcp"
+                       (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/docker/infrakit.gcp"))))
+       (defun custom-persp/magit-linuxkit ()
+         (interactive)
+         (custom-persp "magit-linuxkit"
+                       (magit-status (substitute-env-in-file-name "$HOME/go/src/github.com/linuxkit/linuxkit"))))
        )
    #+END_SRC
    
@@ -2821,8 +2886,8 @@
    #+BEGIN_SRC emacs-lisp
      (use-package eshell
        :commands (eshell)
-       :bind* (("M-m SPC s" . sk/eshell-vertical)
-               ("M-m SPC S" . sk/eshell-horizontal))
+       :bind* (("M-m SPC e" . sk/eshell-vertical)
+               ("M-m SPC E" . sk/eshell-horizontal))
        :init
        (setq eshell-glob-case-insensitive t
              eshell-scroll-to-bottom-on-input 'this
@@ -3194,55 +3259,60 @@
   it on save instead of tangling it every time I open it again.
 
   #+BEGIN_SRC emacs-lisp
-     (defun tangle-if-config ()
-       "If the current buffer is a config '*.org' the code-blocks are
-         tangled, and the tangled file is compiled."
-       (when (member (file-name-nondirectory buffer-file-name) '("emacs.org" "provided/go-config.org"))
-         (tangle-config buffer-file-name)))
+    (defun tangle-if-config ()
+      "If the current buffer is a config '*.org' the code-blocks are
+        tangled, and the tangled file is compiled."
+      (when (member (file-name-nondirectory buffer-file-name) '("emacs.org" "provided/go-config.org"))
+        (tangle-config buffer-file-name)))
 
-     (defun tangle-config-sync (file-name)
-       (interactive)
+    (defun tangle-config-sync (file-name)
+      (interactive)
 
-       ;; Avoid running hooks when tangling.
-       (let* ((prog-mode-hook nil)
-              (src  file-name)
-              ;; (dest (expand-file-name "emacs.el"  user-emacs-directory))
-              (dest (format "%s.el" (file-name-sans-extension file-name))))
-         (message (format "%s -> %s" src dest))
-         (require 'ob-tangle)
-         (org-babel-tangle-file src dest)
-         (if (byte-compile-file dest)
-             (byte-compile-dest-file dest)
-        (with-current-buffer byte-compile-log-buffer
-             (buffer-string)))))
+      ;; Avoid running hooks when tangling.
+      (let* ((prog-mode-hook nil)
+             (src  file-name)
+             ;; (dest (expand-file-name "emacs.el"  user-emacs-directory))
+             (dest (format "%s.el" (file-name-sans-extension file-name))))
+        (message (format "%s -> %s" src dest))
+        (require 'ob-tangle)
+        (org-babel-tangle-file src dest)
+        (if (byte-compile-file dest)
+            (byte-compile-dest-file dest)
+       (with-current-buffer byte-compile-log-buffer
+            (buffer-string)))))
 
-     (defun tangle-config-async (file-name)
-       (async-start
-        (lambda ()
-          ;; make async emacs aware of packages (for byte-compilation)
-          (package-initialize)
-          (setq package-enable-at-startup nil)
-          (require 'org)
+    (defun tangle-config-async (file-name)
+      (async-start
+       (lambda ()
+         ;; make async emacs aware of packages (for byte-compilation)
+         (package-initialize)
+         (setq package-enable-at-startup nil)
+         (require 'org)
 
-          ;; Avoid running hooks when tangling.
-          (let* ((prog-mode-hook nil)
-                 (src  file-name)
-                 (dest (format "%s.el" (file-name-sans-extension file-name))))
-         (message (format "%s -> %s" src dest))
-         (require 'ob-tangle)
-         (org-babel-tangle-file src dest)
-         (if (byte-compile-file dest)
-                (byte-compile-dest-file dest)
-              (with-current-buffer byte-compile-log-buffer
-                (buffer-string))))
-          )))
+         ;; Avoid running hooks when tangling.
+         (let* ((prog-mode-hook nil)
+                (src  file-name)
+                (dest (format "%s.el" (file-name-sans-extension file-name))))
+        (message (format "%s -> %s" src dest))
+        (require 'ob-tangle)
+        (org-babel-tangle-file src dest)
+        (if (byte-compile-file dest)
+               (byte-compile-dest-file dest)
+             (with-current-buffer byte-compile-log-buffer
+               (buffer-string))))
+         )))
 
-     (defun tangle-config (file-name)
-       "Tangle init.org asynchronously."
+    (defun tangle-config (file-name)
+      "Tangle init.org asynchronously."
 
-       (interactive)
-       (message (format "Tangling %s" file-name))
-       (tangle-config-async file-name))
+      (interactive)
+      (message (format "Tangling %s" file-name))
+      (tangle-config-async file-name))
+
+    (defun tangle-emacs-config ()
+      (interactive)
+      (message (format "Tangling emacs config"))
+      (tangle-config-sync (substitute-env-in-file-name "$HOME/src/configs/emacs-config/.emacs.d/emacs.org")))
   #+END_SRC
 
   This is the magic line(s) to make the tangle on save automatic.