diff --git a/init.el b/init.el index debcde856..8023a222c 100644 --- a/init.el +++ b/init.el @@ -83,11 +83,11 @@ module-eshell ; for inferior OSes *cough*windows module-org ; for organized fearless leader - ;;; Extra libraries - extra-demo ; allow me to demonstrate... - extra-tags ; if you liked it you should've generated a tag for it - extra-tmux ; close the rift between GUI & terminal - extra-write ; Emacs as a word processor + ;;; Custom modules + custom-demo ; allow me to demonstrate... + custom-tags ; if you liked it you should've generated a tag for it + custom-tmux ; close the rift between GUI & terminal + custom-write ; Emacs as a word processor ;;; Personal my-commands diff --git a/modules/custom-demo.el b/modules/custom-demo.el new file mode 100644 index 000000000..9f2fd5b9a --- /dev/null +++ b/modules/custom-demo.el @@ -0,0 +1,55 @@ +;;; custom-demo.el --- -*- no-byte-compile: t; -*- + +(defvar powerline-height) + +;; This library offers: +;; + impatient-mode: for broadcasting my emacs session +;; + big-mode: for enlarged text while screencasting +;; + TODO integration with reveal.js for presentations +;; + TODO peer programming collab + +;; Big-mode settings +(defconst big-mode-font (font-spec :family "Inconsolata" :size 16)) +(defconst big-mode-line-spacing 0) +(defconst big-mode-modeline-height 35) + +;; +(use-package impatient-mode + :commands impatient-mode + :config (httpd-start)) + +(defvar big-mode--old-line-spacing line-spacing) +(defvar big-mode--old-modeline-height powerline-height) +(define-minor-mode big-mode + :init-value nil + :lighter " BIG" + :global t + (when big-mode-font + (doom/load-font (if big-mode big-mode-font doom-default-font))) + (if big-mode + (setq-default + powerline-height big-mode-modeline-height + line-spacing big-mode-line-spacing) + (setq-default + powerline-height big-mode--old-modeline-height + line-spacing big-mode--old-line-spacing))) + +(evil-define-command doom:big (&optional size) + "Use to enable large text mode." + (interactive "") + (if size + (let ((big-mode-font big-mode-font)) + (big-mode -1) + (font-put big-mode-font :size (string-to-int size)) + (big-mode +1)) + (big-mode (if big-mode -1 +1)))) + +(defun doom/resize-for-stream () + "Resize the frame pixelwise, so that it fits directly into my livecoding.tv +streaming layout." + (interactive) + (set-frame-width (selected-frame) 1325 nil t) + (set-frame-height (selected-frame) 1080 nil t)) + +(provide 'custom-demo) +;;; custom-demo.el ends here diff --git a/modules/extra-tags.el b/modules/custom-tags.el similarity index 90% rename from modules/extra-tags.el rename to modules/custom-tags.el index 3f72db469..2ebf0438d 100644 --- a/modules/extra-tags.el +++ b/modules/custom-tags.el @@ -1,4 +1,4 @@ -;;; extra-tags.el +;;; custom-tags.el ;; WIP @@ -27,6 +27,7 @@ ;;;###autoload (defun doom/find-def () + "Find definition using tags, falling back to dumb-jump otherwise." (interactive) (let ((orig-pt (point)) (orig-file (buffer-file-name))) @@ -44,5 +45,5 @@ (let ((path (expand-file-name ".tags" (doom/project-root)))) (and (f-exists? path) path))) -(provide 'extra-tags) -;;; extra-tags.el ends here +(provide 'custom-tags) +;;; custom-tags.el ends here diff --git a/modules/extra-tmux.el b/modules/custom-tmux.el similarity index 89% rename from modules/extra-tmux.el rename to modules/custom-tmux.el index b0f4d6e5c..0f7c561e6 100644 --- a/modules/extra-tmux.el +++ b/modules/custom-tmux.el @@ -1,4 +1,4 @@ -;;; extra-tmux.el +;;; custom-tmux.el ;; This library offers: ;; + A way of communicating with a tmux instance @@ -24,7 +24,7 @@ :ex-arg shell (list (when (evil-ex-p) (evil-ex-file-arg)))) -;;;###autoload (autoload 'doom:tmux-cd "extra-tmux" nil t) +;;;###autoload (autoload 'doom:tmux-cd "custom-tmux" nil t) (evil-define-command doom:tmux-cd (&optional bang) (interactive "") (if bang @@ -32,7 +32,7 @@ (doom/tmux-cd-to-here))) (defvar doom-tmux-last-command nil "The last command sent to tmux") -;;;###autoload (autoload 'doom:tmux "extra-tmux" nil t) +;;;###autoload (autoload 'doom:tmux "custom-tmux" nil t) (evil-define-operator doom:tmux (&optional command bang) "Sends input to tmux. Use `bang' to append to tmux" :type inclusive @@ -56,5 +56,5 @@ (interactive) (doom/tmux-cd-to-here (doom/project-root))) -(provide 'extra-tmux) -;;; extra-tmux.el ends here +(provide 'custom-tmux) +;;; custom-tmux.el ends here diff --git a/modules/custom-write.el b/modules/custom-write.el new file mode 100644 index 000000000..81f5059ef --- /dev/null +++ b/modules/custom-write.el @@ -0,0 +1,51 @@ +;; custom-write.el + +;; This library offers the following: +;; + Write-mode: a mode that turns Emacs into an app for writing notes, +;; papers, or fiction: it adds eye-candy to org-mode, switches to a light +;; color theme and to a more readable font. +;; + Bibtex integration + +;; Write-mode settings +(defconst write-mode-theme 'doom-one) +(defconst write-mode-font (font-spec :family "Source Sans Pro" :size 14)) + +(defconst write-mode--last-mode-line mode-line-format) +(defconst write-mode--last-theme doom-current-theme) +(defconst write-mode--last-line-spacing line-spacing) + +(after! spaceline + (spaceline-compile + 'write + '(((*macro-recording *anzu *iedit *evil-substitute *flycheck) + :skip-alternate t + :tight t) + *buffer-path + *buffer-modified) + '((*selection-info :when active) + *buffer-encoding-abbrev + (global :when active) + *buffer-position + *pad))) + +(defvar write-mode nil) +(defun doom/write-mode () + "A mode that turns Emacs into an app for writing notes, papers, or fiction: it +adds eye-candy to org-mode, switches to a light color theme and to a more +readable font." + (interactive) + (setq write-mode (not write-mode)) + (when write-mode-theme + (doom/load-theme (if write-mode write-mode-theme write-mode--last-theme) t)) + (when write-mode-font + (doom/load-font (if write-mode write-mode-font doom-default-font))) + (mapc (lambda (b) + (with-current-buffer b + (setq line-spacing (if write-mode write-mode--last-line-spacing '2)) + (when (featurep 'spaceline) + (let ((doom-hide-mode-line-format '("%e" (:eval (spaceline-ml-write))))) + (doom-hide-mode-line-mode (if write-mode +1 -1)))))) + (doom/get-buffers-in-modes '(org-mode markdown-mode)))) + +(provide 'custom-write) +;;; custom-write.el ends here diff --git a/modules/extra-demo.el b/modules/extra-demo.el deleted file mode 100644 index 3cce498a8..000000000 --- a/modules/extra-demo.el +++ /dev/null @@ -1,51 +0,0 @@ -;;; extra-demo.el --- -*- no-byte-compile: t; -*- - -(defvar powerline-height) - -;; This library offers: -;; + impatient-mode: for broadcasting my emacs session -;; + big-mode: for enlarged text while screencasting -;; + TODO integration with reveal.js for presentations -;; + TODO peer programming collab - -;; Big-mode settings -(defconst big-mode-font (font-spec :family "Inconsolata" :size 16)) -(defconst big-mode-line-spacing 0) -(defconst big-mode-modeline-height 35) - -;; -(use-package impatient-mode - :commands impatient-mode - :config (httpd-start)) - -(defvar big-mode--line-spacing line-spacing) -(defvar big-mode--powerline-height powerline-height) -(define-minor-mode big-mode - :init-value nil - :lighter " BIG" - :global t - (doom/load-font (if big-mode big-mode-font doom-default-font)) - (setq-default - powerline-height - (if big-mode big-mode-modeline-height big-mode--powerline-height) - line-spacing - (if big-mode big-mode-line-spacing big-mode--line-spacing)) - (if big-mode - (progn - (setq neo-window-width 25) - (add-hook 'neo-after-create-hook 'doom|text-scale-1)) - (setq neo-window-width 28) - (remove-hook 'neo-after-create-hook 'doom|text-scale-1))) - -(defun doom|text-scale-1 (&rest _) - (text-scale-set -1) (setq line-spacing 0)) - -(evil-define-command doom:big-mode (&optional size) - (interactive "") - (let ((big-mode-font big-mode-font)) - (when (and size (not big-mode)) - (font-put big-mode-font :size (string-to-int size))) - (big-mode (if big-mode -1 +1)))) - -(provide 'extra-demo) -;;; extra-demo.el ends here diff --git a/modules/extra-write.el b/modules/extra-write.el deleted file mode 100644 index fd25c33e4..000000000 --- a/modules/extra-write.el +++ /dev/null @@ -1,83 +0,0 @@ -;; extra-write.el - -;; This library offers the following: -;; + TODO Write-mode: a mode that turns Emacs into an app for writing notes, papers, or -;; fiction: it adds eye-candy to org-mode, switches to a light color theme and to a -;; more readable font. -;; + Bibtex integration - -;; Write-mode settings -(defconst write-mode nil) -(defconst write-mode-theme 'doom-light) -(defconst write-mode-font (font-spec :family "Hack" :size 12)) - -(defconst write-mode--last-mode-line mode-line-format) -(defconst write-mode--last-theme doom-current-theme) -(defconst write-mode--last-line-spacing line-spacing) - -(after! spaceline - (spaceline-compile - 'write - '(((*macro-recording *anzu *iedit *evil-substitute *flycheck) - :skip-alternate t - :tight t) - *buffer-path - *buffer-modified) - '((*selection-info :when active) - *buffer-encoding-abbrev - (global :when active) - *buffer-position - *pad))) - -;; -(defun write-mode|org-hook () - "A hook that runs in org-mode buffers when `write-mode' is active." - (when write-mode - (setq header-line-format '("%e" (:eval (spaceline-ml-write))) - mode-line-format nil))) - -(defun write-mode-toggle () - "Enable write-mode, this is not a [global] minor mode because it mixes some frame-local -functionality with buffer-local ones, which can be buggy in a minor-mode." - (interactive) - (let* ((mode-p write-mode) - (on-off (if mode-p -1 +1))) - (doom/load-theme (if mode-p write-mode--last-theme write-mode-theme) t) - (doom/load-font (if mode-p doom-default-font write-mode-font)) - (if mode-p - (remove-hook 'org-mode-hook 'write-mode|org-hook) - (add-hook 'org-mode-hook 'write-mode|org-hook)) - (mapc (lambda (b) - (with-current-buffer b - (setq line-spacing (if mode-p write-mode--last-line-spacing '2)) - (when (and (eq major-mode 'org-mode) - (not mode-p)) - (write-mode|org-hook)) - (unless mode-p - (setq mode-line-format write-mode--last-mode-line - header-line-format nil)))) - (doom/get-buffers-in-modes '(org-mode markdown-mode))) - (setq write-mode (not mode-p)))) - -(when (> emacs-major-version 24) - ;; From - ;; Splitting windows while visual-fill-column makes Emacs go crazy. This prevents that - ;; by simply disabled VFC before splitting. - (after! visual-fill-column - (advice-add 'split-window :around #'visual-fill-column--disable-on-split-window)) - (defun visual-fill-column--disable-on-split-window (fn window &rest args) - "Undo the effects of `visual-fill-column-mode' for splitting window." - (if (and (or (not window) (window-live-p window)) - (buffer-local-value 'visual-fill-column-mode - (window-buffer (or window (selected-window))))) - (let ((inhibit-redisplay t)) - (set-window-fringes (or window (selected-window)) nil) - (set-window-margins (or window (selected-window)) 0 0) - (unwind-protect (apply fn window args) - (save-selected-window - (when window (select-window window 'norecord)) - (visual-fill-column--adjust-window)))) - (apply fn window args)))) - -(provide 'extra-write) -;;; extra-write.el ends here