* Package management
** package repositories and package manager
-#+BEGIN_SRC emacs-lisp
- (require 'package)
+Borrowed from https://github.com/nilcons/emacs-use-package-fast/ to
+load 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))
+ (setq use-package-always-ensure t)
+ (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/") ))
** [[https://github.com/jwiegley/use-package/][use-package]]
#+BEGIN_SRC emacs-lisp
(package-initialize)
- (condition-case nil
- (require 'use-package)
- (progn (package-install 'use-package)
- (require 'use-package)))
+ (eval-when-compile
+ (unless (package-installed-p 'use-package)
+ (package-refresh-contents)
+ (package-install 'use-package))
+ (require 'use-package))
#+END_SRC
** Paradox
#+BEGIN_SRC emacs-lisp
((equal arg 16) (helm-org-rifle-occur-agenda-files))
(t (helm-org-agenda-files-headings)))))))
#+END_SRC
-
+*** Helm Google
+This can be used to link things pretty quickly if necessary
+#+BEGIN_SRC emacs-lisp
+ (use-package helm-google
+ :ensure t
+ :bind ("C-c h g" . helm-google)
+ :config
+ (progn (add-to-list 'helm-google-actions
+ '("Copy URL" . (lambda (candidate)
+ (let ((url
+ (replace-regexp-in-string
+ "https://.*q=\\(.*\\)\&sa=.*"
+ "\\1" candidate)))
+ (kill-new url))))
+ t
+ )
+
+ (add-to-list 'helm-google-actions
+ '("Org Store Link" . (lambda (candidate)
+ (let ((title (car (split-string candidate "[\n]+")))
+ (url
+ (replace-regexp-in-string
+ "https://.*q=\\(.*\\)\&sa=.*"
+ "\\1" candidate)))
+ (push (list url title) org-stored-links))))
+ t)
+ ))
+#+END_SRC
+** Zap to char
+#+BEGIN_SRC emacs-lisp
+ (use-package avy-zap
+ :ensure t
+ :bind ("M-z" . avy-zap-up-to-char-dwim))
+#+END_SRC
** Hydra
#+BEGIN_SRC emacs-lisp :tangle don-configuration.el
(require 'don-hydra)
** 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]+-"
)
#+END_SRC
+* Base emacs
+** Reverting buffers
+#+BEGIN_SRC emacs-lisp
+ (setq global-auto-revert-non-file-buffers t
+ global-auto-revert-ignore-modes '(pdf-view-mode)
+ auto-revert-verbose nil)
+ (global-auto-revert-mode 1)
+#+END_SRC
* Org Mode
** Use-package and load things
#+BEGIN_SRC emacs-lisp
#+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)
(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
(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
(global-unset-key "\M-g")
(global-set-key (kbd "M-g l") 'goto-line)
#+END_SRC
+* Debian
+** debian-changelog
+#+BEGIN_SRC emacs-lisp
+ (use-package debian-changelog
+ :mode "debian/changelog"
+ :config
+ (setq debian-changelog-mailing-address "don@debian.org")
+ (setq debian-changelog-full-name "Don Armstrong"))
+#+END_SRC
* Misc (uncharacterized)
#+BEGIN_SRC emacs-lisp
- (setq calendar-latitude 40.11)
- (setq calendar-longitude -88.24)
+ (setq calendar-latitude 38.6)
+ (setq calendar-longitude -121.5)
(setq case-fold-search t)
(setq confirm-kill-emacs (quote y-or-n-p))
(setq cperl-lazy-help-time nil)
- (setq debian-changelog-mailing-address "don@debian.org")
(display-time)
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(display-time-mode 1)
- (global-auto-revert-mode 1)
(global-font-lock-mode 1)
(icomplete-mode 1)
(setq log-edit-keep-buffer t)
(define-key cm-map "b" 'outline-backward-same-level) ; Backward - same level
(global-set-key "\M-o" cm-map)
-
- ; debian stuff
- (setq-default debian-changelog-mailing-address "don@debian.org")
- (setq-default debian-changelog-full-name "Don Armstrong")
-
; ediff configuration
; don't use the multi-window configuration
(setq ediff-window-setup-function 'ediff-setup-windows-plain)