diff --git a/core/lib/defuns-auto-insert.el b/core/defuns/defuns-auto-insert.el similarity index 100% rename from core/lib/defuns-auto-insert.el rename to core/defuns/defuns-auto-insert.el diff --git a/core/lib/defuns-buffers.el b/core/defuns/defuns-buffers.el similarity index 96% rename from core/lib/defuns-buffers.el rename to core/defuns/defuns-buffers.el index 8fe9d739a..fa3321ee2 100644 --- a/core/lib/defuns-buffers.el +++ b/core/defuns/defuns-buffers.el @@ -84,6 +84,12 @@ Inspired from http://demonastery.org/2013/04/emacs-evil-narrow-region/" (--filter (string-match-p pattern (buffer-name it)) (or buffer-list (narf/get-buffers)))) +;;;###autoload +(defun narf/get-buffers-in-modes (modes &optional buffer-list) + "Get a list of buffers whose major-mode is one of MODES" + (--filter (with-current-buffer it (memq major-mode modes)) + (or buffer-list (narf/get-buffers)))) + ;;;###autoload (defun narf/get-real-buffers (&optional buffer-list) (-filter #'narf/real-buffer-p (or buffer-list (narf/get-buffers)))) @@ -215,8 +221,9 @@ left, create a scratch buffer." (evil-define-command narf:kill-all-buffers (&optional bang) "Kill all project buffers. If BANG, kill *all* buffers (in workgroup)." (interactive "") - (narf--kill-buffers (narf/get-buffers (not bang))) - (delete-other-windows)) + (narf--kill-buffers (narf/get-buffers bang)) + (when bang + (delete-other-windows))) ;;;###autoload (autoload 'narf:kill-buried-buffers "defuns-buffers" nil t) (evil-define-command narf:kill-buried-buffers (&optional bang) diff --git a/core/lib/defuns-company.el b/core/defuns/defuns-company.el similarity index 100% rename from core/lib/defuns-company.el rename to core/defuns/defuns-company.el diff --git a/core/lib/defuns-compile.el b/core/defuns/defuns-compile.el similarity index 80% rename from core/lib/defuns-compile.el rename to core/defuns/defuns-compile.el index 13dd1e427..44a50b21f 100644 --- a/core/lib/defuns-compile.el +++ b/core/defuns/defuns-compile.el @@ -7,10 +7,9 @@ ;; TODO Detect init.el and init-load-path.el (and (f-exists? (f-expand (concat (f-base file-name) ".elc") (f-dirname file-name))) (--any? (f-child-of? file-name it) - (append (list narf-core-dir narf-contrib-dir) - (list (concat narf-modules-dir "lib/") - (concat narf-core-dir "lib/")) - (list narf-modules-dir narf-private-dir)))))) + (append (list narf-core-dir narf-modules-dir + narf-core-dir narf-modules-dir + narf-private-dir)))))) ;;;###autoload (autoload 'narf:compile-el "defuns-compile" nil t) (evil-define-command narf:compile-el (&optional bang) diff --git a/core/lib/defuns-debug.el b/core/defuns/defuns-debug.el similarity index 100% rename from core/lib/defuns-debug.el rename to core/defuns/defuns-debug.el diff --git a/core/lib/defuns-editor.el b/core/defuns/defuns-editor.el similarity index 100% rename from core/lib/defuns-editor.el rename to core/defuns/defuns-editor.el diff --git a/core/lib/defuns-evil.el b/core/defuns/defuns-evil.el similarity index 100% rename from core/lib/defuns-evil.el rename to core/defuns/defuns-evil.el diff --git a/core/lib/defuns-file.el b/core/defuns/defuns-file.el similarity index 100% rename from core/lib/defuns-file.el rename to core/defuns/defuns-file.el diff --git a/core/lib/defuns-flycheck.el b/core/defuns/defuns-flycheck.el similarity index 100% rename from core/lib/defuns-flycheck.el rename to core/defuns/defuns-flycheck.el diff --git a/core/lib/defuns-helm.el b/core/defuns/defuns-helm.el similarity index 100% rename from core/lib/defuns-helm.el rename to core/defuns/defuns-helm.el diff --git a/core/lib/defuns-ido.el b/core/defuns/defuns-ido.el similarity index 100% rename from core/lib/defuns-ido.el rename to core/defuns/defuns-ido.el diff --git a/core/lib/defuns-neotree.el b/core/defuns/defuns-neotree.el similarity index 100% rename from core/lib/defuns-neotree.el rename to core/defuns/defuns-neotree.el diff --git a/core/lib/defuns-nlinum.el b/core/defuns/defuns-nlinum.el similarity index 100% rename from core/lib/defuns-nlinum.el rename to core/defuns/defuns-nlinum.el diff --git a/core/lib/defuns-project.el b/core/defuns/defuns-project.el similarity index 100% rename from core/lib/defuns-project.el rename to core/defuns/defuns-project.el diff --git a/core/lib/defuns-quickrun.el b/core/defuns/defuns-quickrun.el similarity index 100% rename from core/lib/defuns-quickrun.el rename to core/defuns/defuns-quickrun.el diff --git a/core/lib/defuns-repl.el b/core/defuns/defuns-repl.el similarity index 100% rename from core/lib/defuns-repl.el rename to core/defuns/defuns-repl.el diff --git a/core/lib/defuns-spaceline.el b/core/defuns/defuns-spaceline.el similarity index 100% rename from core/lib/defuns-spaceline.el rename to core/defuns/defuns-spaceline.el diff --git a/core/lib/defuns-ui.el b/core/defuns/defuns-ui.el similarity index 63% rename from core/lib/defuns-ui.el rename to core/defuns/defuns-ui.el index cbd30ec0e..416fd442f 100644 --- a/core/lib/defuns-ui.el +++ b/core/defuns/defuns-ui.el @@ -11,11 +11,12 @@ (set-frame-parameter nil 'alpha 0)))) ;;;###autoload (autoload 'narf:toggle-fullscreen "defuns-ui" nil t) -(evil-define-command narf:toggle-fullscreen (&optional bang) - (interactive "") - (if bang - (writeroom-mode (if writeroom-mode -1 1)) - (set-frame-parameter nil 'fullscreen (if (not (frame-parameter nil 'fullscreen)) 'fullboth)))) +(after! evil + (evil-define-command narf:toggle-fullscreen (&optional bang) + (interactive "") + (if bang + (writeroom-mode (if writeroom-mode -1 1)) + (set-frame-parameter nil 'fullscreen (if (not (frame-parameter nil 'fullscreen)) 'fullboth))))) (defvar narf--big-mode nil) ;;;###autoload @@ -27,16 +28,23 @@ ;;;###autoload (defun narf/reset-theme () (interactive) - (narf/load-theme narf-theme)) + (narf/load-theme (or narf-current-theme narf-theme))) ;;;###autoload -(defun narf/load-theme (theme) +(defun narf/load-font (font) (interactive) - (ignore-errors - (mapc (lambda (th) - (when (custom-theme-enabled-p th) (disable-theme th))) - custom-enabled-themes)) - (load-theme theme t)) + (set-frame-font font) + (setq narf-current-font font)) + +;;;###autoload +(defun narf/load-theme (theme &optional suppress-font) + (interactive) + (when narf-current-theme + (disable-theme narf-current-theme)) + (load-theme theme t) + (unless suppress-font + (narf/load-font narf-current-font)) + (setq narf-current-theme theme)) ;;;###autoload (defun narf/default-font () diff --git a/core/lib/defuns-whitespace.el b/core/defuns/defuns-whitespace.el similarity index 100% rename from core/lib/defuns-whitespace.el rename to core/defuns/defuns-whitespace.el diff --git a/core/lib/defuns-window.el b/core/defuns/defuns-window.el similarity index 90% rename from core/lib/defuns-window.el rename to core/defuns/defuns-window.el index ca450241d..c304a8760 100644 --- a/core/lib/defuns-window.el +++ b/core/defuns/defuns-window.el @@ -102,5 +102,18 @@ evil-window-move-* (e.g. `evil-window-move-far-left')" (interactive) (narf--evil-window-move 'right)) +;;;###autoload +(defun narf/window-reorient () + "Reorient all windows that are scrolled to the right." + (interactive) + (let ((i 0)) + (mapc (lambda (w) + (with-selected-window w + (when (> (window-hscroll) 0) + (cl-incf i) + (evil-beginning-of-line)))) + (narf/get-visible-windows)) + (message "Reoriented %s windows" i))) + (provide 'defuns-window) ;;; defuns-window.el ends here diff --git a/core/lib/defuns-workgroup.el b/core/defuns/defuns-workgroup.el similarity index 100% rename from core/lib/defuns-workgroup.el rename to core/defuns/defuns-workgroup.el diff --git a/core/lib/defuns-yasnippet.el b/core/defuns/defuns-yasnippet.el similarity index 100% rename from core/lib/defuns-yasnippet.el rename to core/defuns/defuns-yasnippet.el diff --git a/core/lib/macros-company.el b/core/defuns/macros-company.el similarity index 100% rename from core/lib/macros-company.el rename to core/defuns/macros-company.el diff --git a/core/lib/macros-quickrun.el b/core/defuns/macros-quickrun.el similarity index 100% rename from core/lib/macros-quickrun.el rename to core/defuns/macros-quickrun.el diff --git a/core/lib/macros-spaceline.el b/core/defuns/macros-spaceline.el similarity index 100% rename from core/lib/macros-spaceline.el rename to core/defuns/macros-spaceline.el diff --git a/core/lib/macros-yasnippet.el b/core/defuns/macros-yasnippet.el similarity index 100% rename from core/lib/macros-yasnippet.el rename to core/defuns/macros-yasnippet.el diff --git a/modules/lib/defuns-cc.el b/modules/defuns/defuns-cc.el similarity index 100% rename from modules/lib/defuns-cc.el rename to modules/defuns/defuns-cc.el diff --git a/modules/lib/defuns-eshell.el b/modules/defuns/defuns-eshell.el similarity index 100% rename from modules/lib/defuns-eshell.el rename to modules/defuns/defuns-eshell.el diff --git a/modules/lib/defuns-go.el b/modules/defuns/defuns-go.el similarity index 100% rename from modules/lib/defuns-go.el rename to modules/defuns/defuns-go.el diff --git a/modules/lib/defuns-java.el b/modules/defuns/defuns-java.el similarity index 100% rename from modules/lib/defuns-java.el rename to modules/defuns/defuns-java.el diff --git a/modules/lib/defuns-lisp.el b/modules/defuns/defuns-lisp.el similarity index 100% rename from modules/lib/defuns-lisp.el rename to modules/defuns/defuns-lisp.el diff --git a/modules/lib/defuns-markdown.el b/modules/defuns/defuns-markdown.el similarity index 100% rename from modules/lib/defuns-markdown.el rename to modules/defuns/defuns-markdown.el diff --git a/modules/lib/defuns-org-attach.el b/modules/defuns/defuns-org-attach.el similarity index 100% rename from modules/lib/defuns-org-attach.el rename to modules/defuns/defuns-org-attach.el diff --git a/modules/lib/defuns-org-crm.el b/modules/defuns/defuns-org-crm.el similarity index 100% rename from modules/lib/defuns-org-crm.el rename to modules/defuns/defuns-org-crm.el diff --git a/modules/lib/defuns-org.el b/modules/defuns/defuns-org.el similarity index 89% rename from modules/lib/defuns-org.el rename to modules/defuns/defuns-org.el index 246cc9206..29792f245 100644 --- a/modules/lib/defuns-org.el +++ b/modules/defuns/defuns-org.el @@ -14,11 +14,12 @@ (defun narf/org-insert-item (direction) "Inserts a new heading or item, depending on the context." (interactive) - (let* ((context (org-element-lineage - (org-element-context) - '(table table-row headline inlinetask - item plain-list) - t)) + (let* ((context (org-element-context) + ;; (org-element-lineage + ;; '(table table-row headline inlinetask + ;; item plain-list) + ;; t) + ) (type (org-element-type context))) (cond ((eq type 'item) (cl-case direction @@ -63,13 +64,15 @@ (defun narf/org-dwim-at-point () (interactive) (let* ((scroll-pt (window-start)) - (context (org-element-lineage - (org-element-context) - '(table table-row clock comment comment-block footnote-definition - footnote-reference headline inlinetask keyword link latex-fragment - latex-environment src-block inline-src-block item plain-list - timestamp babel-call) - t)) + (context (org-element-context) + ;; (org-element-lineage + ;; (org-element-context) + ;; '(table table-row clock comment comment-block footnote-definition + ;; footnote-reference headline inlinetask keyword link latex-fragment + ;; latex-environment src-block inline-src-block item plain-list + ;; timestamp babel-call) + ;; t) + ) (type (org-element-type context)) (value (org-element-property :value context))) (cond @@ -88,11 +91,13 @@ (if (eq (org-element-property :todo-type context) 'done) 'todo 'done))) ((memq type '(headline)) - (org-remove-latex-fragment-image-overlays - (save-excursion (org-beginning-of-line) (point)) - (save-excursion (org-end-of-subtree) (point))) - (org-map-entries 'org-toggle-latex-fragment t 'tree) - (narf/org-refresh-inline-images)) + (org-preview-latex-fragment t) + ;; (org-remove-latex-fragment-image-overlays + ;; (save-excursion (org-beginning-of-line) (point)) + ;; (save-excursion (org-end-of-subtree) (point))) + ;; (org-map-entries 'org-toggle-latex-fragment t 'tree) + (narf/org-refresh-inline-images) + ) ((memq type '(babel-call)) (org-babel-lob-execute-maybe)) @@ -101,7 +106,7 @@ (org-babel-execute-src-block)) ((memq type '(latex-fragment latex-environment)) - (org-toggle-latex-fragment)) + (org-preview-latex-fragment)) ((memq type '(link)) (org-open-at-point)) diff --git a/modules/lib/defuns-python.el b/modules/defuns/defuns-python.el similarity index 100% rename from modules/lib/defuns-python.el rename to modules/defuns/defuns-python.el diff --git a/modules/lib/defuns-regex.el b/modules/defuns/defuns-regex.el similarity index 100% rename from modules/lib/defuns-regex.el rename to modules/defuns/defuns-regex.el diff --git a/modules/lib/defuns-ruby.el b/modules/defuns/defuns-ruby.el similarity index 100% rename from modules/lib/defuns-ruby.el rename to modules/defuns/defuns-ruby.el diff --git a/modules/lib/defuns-scss.el b/modules/defuns/defuns-scss.el similarity index 100% rename from modules/lib/defuns-scss.el rename to modules/defuns/defuns-scss.el diff --git a/modules/lib/defuns-sh.el b/modules/defuns/defuns-sh.el similarity index 100% rename from modules/lib/defuns-sh.el rename to modules/defuns/defuns-sh.el diff --git a/modules/lib/defuns-web.el b/modules/defuns/defuns-web.el similarity index 100% rename from modules/lib/defuns-web.el rename to modules/defuns/defuns-web.el