X-Git-Url: https://git.donarmstrong.com/?p=lib.git;a=blobdiff_plain;f=emacs_el%2Fconfiguration%2Fdon-configuration.org;h=d2b33c0bbb825fc97e0d985189fcb0eab026d4c8;hp=069e260c4c02a5d58a177211894d2c87eedf7fa1;hb=d16b510466c5f609c5d093c819f33c5644305918;hpb=9898a8620eb112306c2eeea8d018902bc0e672b7 diff --git a/emacs_el/configuration/don-configuration.org b/emacs_el/configuration/don-configuration.org index 069e260..d2b33c0 100644 --- a/emacs_el/configuration/don-configuration.org +++ b/emacs_el/configuration/don-configuration.org @@ -7,36 +7,68 @@ #+BEGIN_SRC emacs-lisp (setq debug-on-event 'siguser2) #+END_SRC -* Add library paths - +* Initial startup stuff +** Disable startup screen #+BEGIN_SRC emacs-lisp - (add-to-list 'load-path '"~/lib/emacs_el/") - (add-to-list 'load-path '"~/lib/emacs_el/tiny-tools/lisp/tiny") - (add-to-list 'load-path '"~/lib/emacs_el/tiny-tools/lisp/other") - (add-to-list 'load-path '"~/lib/emacs_el/magit-annex") + (setq inhibit-startup-screen t) #+END_SRC - -* Package management -** package repositories and package manager +** Disable cluter #+BEGIN_SRC emacs-lisp - (require 'package) - (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") - ("melpa" . "https://melpa.org/packages/") - ("org" . "http://orgmode.org/elpa/") )) + ; (if (fboundp 'menu-bar-mode) (menu-bar-mode -1)) + (if (fboundp 'tool-bar-mode) (tool-bar-mode -1)) + (if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1)) #+END_SRC -** [[https://github.com/jwiegley/use-package/][use-package]] +** Fullscreen #+BEGIN_SRC emacs-lisp - (package-initialize) - (condition-case nil - (require 'use-package) - (progn (package-install 'use-package) - (require 'use-package))) + (setq frame-resize-pixelwise t) + (add-to-list 'default-frame-alist '(fullscreen . maximixed)) +#+END_SRC +* Package management +** package repositories and package manager +Borrowed from https://github.com/nilcons/emacs-use-package-fast/ to +load [[https://github.com/jwiegley/use-package/][use-package]] even faster +#+BEGIN_SRC emacs-lisp + (setq package-enable-at-startup nil) + (setq package--init-file-ensured t) + (eval-and-compile + (setq use-package-verbose (not (bound-and-true-p byte-compile-current-file)))) + (mapc #'(lambda (add) (add-to-list 'load-path add)) + (eval-when-compile + (package-initialize) + (unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + (let ((package-user-dir-real (file-truename package-user-dir))) + ;; The reverse is necessary, because outside we mapc + ;; add-to-list element-by-element, which reverses. + (nreverse (apply #'nconc + ;; Only keep package.el provided loadpaths. + (mapcar #'(lambda (path) + (if (string-prefix-p package-user-dir-real path) + (list path) + nil)) + load-path)))))) + + (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/") + ("org" . "http://orgmode.org/elpa/") )) + (require 'use-package) + (require 'diminish) + (require 'bind-key) #+END_SRC ** Paradox #+BEGIN_SRC emacs-lisp (use-package paradox :ensure paradox - ) + :commands (paradox-upgrade-packages paradox-list-packages) + :config (setq paradox-execute-asynchronously t) + ) +#+END_SRC +* Add library paths + +#+BEGIN_SRC emacs-lisp + (add-to-list 'load-path '"~/lib/emacs_el/") + (add-to-list 'load-path '"~/lib/emacs_el/magit-annex") #+END_SRC * Disable custom-vars #+BEGIN_SRC emacs-lisp @@ -103,48 +135,48 @@ ** Eyebrowse #+BEGIN_SRC emacs-lisp - ;; (use-package eyebrowse - ;; :ensure t - ;; :diminish eyebrowse-mode - ;; :init (setq eyebrowse-keymap-prefix (kbd "C-c C-\\")) - ;; :config (progn - ;; (setq eyebrowse-wrap-around t) - ;; (eyebrowse-mode t) - ;; - ;; (defun my/eyebrowse-new-window-config () - ;; (interactive) - ;; (let ((done nil)) - ;; (dotimes (i 10) - ;; ;; start at 1 run till 0 - ;; (let ((j (mod (+ i 1) 10))) - ;; (when (and (not done) - ;; (not (eyebrowse--window-config-present-p j))) - ;; (eyebrowse-switch-to-window-config j) - ;; (call-interactively 'eyebrowse-rename-window-config2 j) - ;; (setq done t) - ;; )) - ;; ))) - ;; - ;; ;; I don't use latex-preview-pane - ;; ;; (require 'latex-preview-pane) - ;; ;; (defun my/close-latex-preview-pane-before-eyebrowse-switch () - ;; ;; ;; latex-preview-pane uses window-parameters which are - ;; ;; ;; not preserved by eyebrowse, so we close the preview - ;; ;; ;; pane before switching, it will be regenerated when we - ;; ;; ;; edit the TeX file. - ;; ;; (when (lpp/window-containing-preview) - ;; ;; (delete-window (lpp/window-containing-preview)))) - ;; - ;; ;; (add-to-list 'eyebrowse-pre-window-switch-hook - ;; ;; #'my/close-latex-preview-pane-before-eyebrowse-switch) - ;; - ;; ;; (my/set-menu-key "[" #'my/eyebrowse-new-window-config) - ;; ;; (my/set-menu-key ";" #'eyebrowse-prev-window-config) - ;; ;; (my/set-menu-key "'" #'eyebrowse-next-window-config) - ;; ;; (my/set-menu-key "]" #'eyebrowse-close-window-config) - ;; ;; (my/set-menu-key "\\" #'eyebrowse-rename-window-config) - ;; ) - ;; ) + (use-package eyebrowse + :ensure t + :diminish eyebrowse-mode + :init (setq eyebrowse-keymap-prefix (kbd "C-c e")) + :config (progn + (setq eyebrowse-wrap-around t) + (eyebrowse-mode t) + + (defun my/eyebrowse-new-window-config () + (interactive) + (let ((done nil)) + (dotimes (i 10) + ;; start at 1 run till 0 + (let ((j (mod (+ i 1) 10))) + (when (and (not done) + (not (eyebrowse--window-config-present-p j))) + (eyebrowse-switch-to-window-config j) + (call-interactively 'eyebrowse-rename-window-config2 j) + (setq done t) + )) + ))) + + ;; I don't use latex-preview-pane + ;; (require 'latex-preview-pane) + ;; (defun my/close-latex-preview-pane-before-eyebrowse-switch () + ;; ;; latex-preview-pane uses window-parameters which are + ;; ;; not preserved by eyebrowse, so we close the preview + ;; ;; pane before switching, it will be regenerated when we + ;; ;; edit the TeX file. + ;; (when (lpp/window-containing-preview) + ;; (delete-window (lpp/window-containing-preview)))) + + ;; (add-to-list 'eyebrowse-pre-window-switch-hook + ;; #'my/close-latex-preview-pane-before-eyebrowse-switch) + + ;; (my/set-menu-key "[" #'my/eyebrowse-new-window-config) + ;; (my/set-menu-key ";" #'eyebrowse-prev-window-config) + ;; (my/set-menu-key "'" #'eyebrowse-next-window-config) + ;; (my/set-menu-key "]" #'eyebrowse-close-window-config) + ;; (my/set-menu-key "\\" #'eyebrowse-rename-window-config) + ) + ) #+END_SRC ** Window handling @@ -809,7 +841,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori ** Mutt *** Message-mode #+BEGIN_SRC emacs-lisp - (use-package message-mode + (use-package message :mode "muttng-[a-z0-9]+-[0-9]+-" :mode "mutt-[a-z0-9]+-[0-9]+-" @@ -878,10 +910,10 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori #+END_SRC ** Agenda Configuration #+BEGIN_SRC emacs-lisp - :mode "\\.\\(org\\|org_archive\\|txt\\)$" + :mode ("\\.\\(org\\|org_archive\\|txt\\)\\'" . org-mode) :bind (("C-c l" . org-store-link) ("C-c a" . org-agenda) - ("C-c b" . org-iswitchb) + ("C-c b" . org-iswitchb)) :config (setq-default org-log-done 'time) (setq-default org-agenda-ndays 5) @@ -1002,12 +1034,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (write-file "/tmp/timeline.org") (org-agenda arg "L"))) (define-key org-mode-map (kbd "C-c t") 'org-agenda-timeline-all) - ;; add automatic reminders for appointments - (defadvice org-agenda-redo (after org-agenda-redo-add-appts) - "Pressing `r' on the agenda will also add appointments." - (progn - (setq appt-time-msg-list nil) - (org-agenda-to-appt))) #+END_SRC ** General config @@ -1794,6 +1820,49 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (load-file "~/.hide/org_gcal.el")) ) ) +#+END_SRC +** appt integration +#+BEGIN_SRC emacs-lisp + (use-package appt + :config + ;; Show notification 10 minutes before event + (setq appt-message-warning-time 10) + ;; Disable multiple reminders + (setq appt-display-interval appt-message-warning-time) + (setq appt-display-mode-line nil) + + ;; add automatic reminders for appointments + (defun my/org-agenda-to-appt () + (interactive) + (setq appt-time-msg-list nil) + (org-agenda-to-appt)) + ;; add reminders when starting emacs + (my/org-agenda-to-appt) + ;; when rebuilding the agenda + (defadvice org-agenda-redo (after org-agenda-redo-add-appts) + "Pressing `r' on the agenda will also add appointments." + (my/org-agenda-to-appt) + ) + ;; when saving all org buffers + (defadvice org-save-all-org-buffers (after org-save-all-org-buffers-add-appts) + "Re-add appts after saving all org buffers" + (my/org-agenda-to-appt)) + ;; Display appointments as a window manager notification + (setq appt-disp-window-function 'my/appt-display) + (setq appt-delete-window-function (lambda () t)) + + (setq my/appt-notification-app (concat (getenv "HOME") "/bin/appt_notification")) + + (defun my/appt-display (min-to-app new-time msg) + (if (atom min-to-app) + (start-process "my/appt-notification-app" nil my/appt-notification-app min-to-app msg) + (dolist (i (number-sequence 0 (1- (length min-to-app)))) + (start-process "my/appt-notification-app" nil my/appt-notification-app + (nth i min-to-app) (nth i msg)))) + ) + ) + + #+END_SRC ** End use-package #+BEGIN_SRC emacs-lisp