diff --git a/core/defuns/defuns-workgroup.el b/core/defuns/defuns-workgroup.el index 9162dd74a..5c9bece38 100644 --- a/core/defuns/defuns-workgroup.el +++ b/core/defuns/defuns-workgroup.el @@ -2,25 +2,32 @@ ;;;###autoload (defun narf/wg-projectile-switch-project () - (let ((workgroup-name (file-name-nondirectory (directory-file-name (narf/project-root))))) - (wg-create-workgroup workgroup-name t) - (helm-projectile-find-file))) + (narf:workgroup-new nil (file-name-nondirectory (directory-file-name (narf/project-root))) t)) ;;;###autoload (autoload 'narf:save-session "defuns-workgroup" nil t) -(evil-define-command narf:save-session (&optional session-name) - (interactive "") +(evil-define-command narf:save-session (&optional bang session-name) + (interactive "") (unless (wg-workgroup-list) (wg-create-workgroup wg-first-wg-name)) (wg-save-session-as (if session-name (concat wg-workgroup-directory session-name) - wg-session-file))) + (if bang + (concat wg-workgroup-directory (f-filename (narf/project-root))) + wg-session-file)))) ;;;###autoload (autoload 'narf:load-session "defuns-workgroup" nil t) -(evil-define-command narf:load-session (&optional session-name) - (interactive "") - (wg-open-session (if session-name - (concat wg-workgroup-directory session-name) - wg-session-file)) +(evil-define-command narf:load-session (&optional bang session-name) + (interactive "") + (let ((session-file (if session-name + (concat wg-workgroup-directory session-name) + (let ((sess (concat wg-workgroup-directory (f-filename (narf/project-root))))) + (if bang + (when (file-exists-p sess) + sess) + wg-session-file))))) + (unless session-file + (user-error "No session found")) + (wg-open-session session-file)) (narf/workgroup-display t)) ;;;###autoload @@ -37,8 +44,9 @@ (setq name (format "#%s" (1+ (length (wg-workgroup-list)))))) (let ((new-wg (wg-get-workgroup name t))) (when (and new-wg bang) - (wg-delete-workgroup new-wg)) - (setq new-wg (wg-make-and-add-workgroup name t)) + (wg-delete-workgroup new-wg) + (setq new-wg nil)) + (setq new-wg (or new-wg (wg-make-and-add-workgroup name t))) (add-to-list 'narf-wg-names (wg-workgroup-uid new-wg)) (wg-switch-to-workgroup new-wg)) (unless silent diff --git a/modules/module-apple.el b/modules/module-apple.el index bc1da44fd..7d79c8346 100644 --- a/modules/module-apple.el +++ b/modules/module-apple.el @@ -2,16 +2,6 @@ (use-package applescript-mode :mode "\\.applescript$") -;; TODO Set up emacs task runners for fruitstrap -(use-package swift-mode - :mode "\\.swift$" - :init (add-hook 'swift-mode-hook 'flycheck-mode) - :config - (after! flycheck (push 'swift flycheck-checkers)) - - (require 'company-sourcekit) - (define-company-backend! swift-mode (sourcekit yasnippet))) - ;; ;; LaunchBar: https://www.obdev.at/products/launchbar @@ -30,5 +20,20 @@ (let ((dir (f-traverse-upwards (lambda (f) (string-suffix-p ".lbaction" f))))) (shell-command (format "open '%s'" dir)))) + +;; +;; Swift +;; + +;; TODO Set up emacs task runners for fruitstrap +(use-package swift-mode + :mode "\\.swift$" + :init (add-hook 'swift-mode-hook 'flycheck-mode) + :config + (after! flycheck (push 'swift flycheck-checkers)) + + (require 'company-sourcekit) + (define-company-backend! swift-mode (sourcekit yasnippet))) + (provide 'module-apple) ;;; module-apple.el ends here