doomemacs/modules/custom-write.el
2016-09-19 17:46:37 +02:00

66 lines
2.8 KiB
EmacsLisp

;; custom-write.el --- FIXME
;; 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)
(defun doom-write-mode-line (&optional id)
`(:eval
(let* ((active (eq (selected-window) mode-line-selected-window))
(lhs (list (propertize " "
'display
(pl/percent-xpm doom-modeline-height 100 0 100 0 3
(face-attribute (if active 'doom-modeline-bar 'doom-modeline-inactive-bar) :background nil t)
nil))
(*flycheck)
(*macro-recording)
(*selection-info)
(*anzu)
(*evil-substitute)
(*iedit)
" "
,(if (eq id 'scratch)
'(*buffer-pwd)
'(list (*buffer-path) (*buffer-name) " "))
(*buffer-state)))
(rhs (list (*buffer-encoding-abbrev) " "
(*vc) " "
(*major-mode) " "
(*buffer-position)))
(middle (propertize
" " 'display `((space :align-to (- (+ right right-fringe right-margin)
,(1+ (string-width (format-mode-line rhs)))))))))
(list lhs middle rhs))))
(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