diff --git a/conf.org b/conf.org index c1fd980..999f01c 100644 --- a/conf.org +++ b/conf.org @@ -466,121 +466,6 @@ NOTES: (haskell-mode . (lambda () (setq-local company-backends '((company-ghc)))))) #+END_SRC -* magit -#+BEGIN_SRC emacs-lisp -(use-package magit - :ensure t - :config - :delight auto-revert-mode - (setq magit-push-always-verify nil - git-commit-summary-max-length 50)) -#+END_SRC -* dired -** no confirm -Keeping confirmation enabled does weird stuff with helm. Not ideal at the moment but we shall see if I find something better. -#+BEGIN_SRC emacs-lisp -(setq dired-no-confirm '(move copy)) -#+END_SRC -** interactive functions -#+BEGIN_SRC emacs-lisp -(defun nd/dired-xdg-open () - "Open all non-text files in external app using xdg-open. Only regular files are considered" - (interactive) - (let* ((file-list (seq-filter #'file-regular-p (dired-get-marked-files))) - (do-it (if (<= (length file-list) 5) - t - (y-or-n-p "Open more then 5 files? ")))) - (when do-it - (mapc - (lambda (f) (let ((process-connection-type nil)) - (start-process "" nil "xdg-open" f))) - file-list)))) - -(defun nd/dired-open-with () - "Open marked non-text files in external app via open-with dialog -according to mime types as listed in all available desktop files." - (interactive) - (let* ((mf (seq-filter #'file-regular-p (dired-get-marked-files))) - (qmf (mapcar #'shell-quote-argument mf)) - (file-mime-list (mapcar (lambda (f) (list f (nd/get-mime-type f))) qmf))) - - (if (= (length file-mime-list) 0) - (message "No files selected") - - (let* ((first-pair (car file-mime-list)) - (last-pairs (cdr file-mime-list)) - mime-alist file-list) - (setq file-list (nth 0 first-pair) - mime-alist (nd/get-apps-from-mime (nth 1 first-pair))) - ;; if multiple files selected, add to the selection list - (if last-pairs - (progn - (setq file-list (string-join (mapcar #'car file-mime-list) " ")) - (dolist (mime (mapcar (lambda (f) (nth 1 f)) last-pairs)) - (setq mime-alist (intersection mime-alist - (nd/get-apps-from-mime mime) - :test #'equal))))) - (if (= (length mime-alist) 0) - (let* ((ml (delete-dups (mapcan #'cdr file-mime-list))) - (mls (string-join ml ", "))) - (if (= (length ml) 1) - (message (concat "No apps found for mime type: " mls)) - (message (concat "No common apps found for mime types: " mls)))) - (helm - :sources (helm-build-sync-source "Apps" - :candidates mime-alist - :action '(("Open" . (lambda (f) (nd/execute-desktop-command f file-list))))) - :buffer "*helm open with*")))))) - -(defun nd/dired-sort-by () - "Sort current dired buffer by a list of choices presented in helm menu. -Note this assumes there are no sorting switches on `dired-ls'" - (interactive) - (let ((sort-alist '(("Name" . "") - ("Date" . "-t") - ("Size" . "-S") - ("Extension" . "-X") - ("Dirs First" . "--group-directories-first")))) - (helm - :sources - (helm-build-sync-source "Switches" - :candidates sort-alist - :action - '(("Sort" . (lambda (s) (dired-sort-other (concat dired-listing-switches " " s)))))) - :buffer "*helm sort buffer*"))) -#+END_SRC -** compression -Only supports tar.gz, tar.bz2, tar.xz, and .zip by default. Add support for more fun algos such as lzo and zpaq -#+BEGIN_SRC emacs-lisp -(if (file-exists-p "/usr/bin/7z") - (add-to-list 'dired-compress-files-alist - '("\\.7z\\'" . "7z a %o %i"))) - -(if (file-exists-p "/usr/bin/lrzip") - (progn - (add-to-list 'dired-compress-files-alist - '("\\.lrz\\'" . "lrzip -L 9 -o %o %i &")) - (add-to-list 'dired-compress-files-alist - '("\\.lzo\\'" . "lrzip -l -L 9 -o %o %i &")) - (add-to-list 'dired-compress-files-alist - '("\\.zpaq\\'" . "lrzip -z -L 9 -o %o %i &")))) - -;; NOTE: this must be after the shorter lrz algos otherwise it will -;; always default to .lrz and not .tar.lrz -(if (file-exists-p "/usr/bin/lrztar") - (progn - (add-to-list 'dired-compress-files-alist - '("\\.tar\\.lrz\\'" . "lrztar -L 9 -o %o %i &")) - (add-to-list 'dired-compress-files-alist - '("\\.tar\\.lzo\\'" . "lrztar -l -L 9 -o %o %i &")) - (add-to-list 'dired-compress-files-alist - '("\\.tar\\.zpaq\\'" . "lrztar -z -L 9 -o %o %i &")))) -#+END_SRC -** formatting for humans -make sizes human readable -#+BEGIN_SRC emacs-lisp -(setq dired-listing-switches "-Alh") -#+END_SRC * org-mode ** major mode *** general config @@ -1757,8 +1642,124 @@ set as a text property for further sorting" #+BEGIN_SRC emacs-lisp ;;(require 'ox-taskjuggler) #+END_SRC -* mu4e -** basic +* tools +** magit +#+BEGIN_SRC emacs-lisp +(use-package magit + :ensure t + :config + :delight auto-revert-mode + (setq magit-push-always-verify nil + git-commit-summary-max-length 50)) +#+END_SRC +** dired +*** no confirm +Keeping confirmation enabled does weird stuff with helm. Not ideal at the moment but we shall see if I find something better. +#+BEGIN_SRC emacs-lisp +(setq dired-no-confirm '(move copy)) +#+END_SRC +*** interactive functions +#+BEGIN_SRC emacs-lisp +(defun nd/dired-xdg-open () + "Open all non-text files in external app using xdg-open. Only regular files are considered" + (interactive) + (let* ((file-list (seq-filter #'file-regular-p (dired-get-marked-files))) + (do-it (if (<= (length file-list) 5) + t + (y-or-n-p "Open more then 5 files? ")))) + (when do-it + (mapc + (lambda (f) (let ((process-connection-type nil)) + (start-process "" nil "xdg-open" f))) + file-list)))) + +(defun nd/dired-open-with () + "Open marked non-text files in external app via open-with dialog +according to mime types as listed in all available desktop files." + (interactive) + (let* ((mf (seq-filter #'file-regular-p (dired-get-marked-files))) + (qmf (mapcar #'shell-quote-argument mf)) + (file-mime-list (mapcar (lambda (f) (list f (nd/get-mime-type f))) qmf))) + + (if (= (length file-mime-list) 0) + (message "No files selected") + + (let* ((first-pair (car file-mime-list)) + (last-pairs (cdr file-mime-list)) + mime-alist file-list) + (setq file-list (nth 0 first-pair) + mime-alist (nd/get-apps-from-mime (nth 1 first-pair))) + ;; if multiple files selected, add to the selection list + (if last-pairs + (progn + (setq file-list (string-join (mapcar #'car file-mime-list) " ")) + (dolist (mime (mapcar (lambda (f) (nth 1 f)) last-pairs)) + (setq mime-alist (intersection mime-alist + (nd/get-apps-from-mime mime) + :test #'equal))))) + (if (= (length mime-alist) 0) + (let* ((ml (delete-dups (mapcan #'cdr file-mime-list))) + (mls (string-join ml ", "))) + (if (= (length ml) 1) + (message (concat "No apps found for mime type: " mls)) + (message (concat "No common apps found for mime types: " mls)))) + (helm + :sources (helm-build-sync-source "Apps" + :candidates mime-alist + :action '(("Open" . (lambda (f) (nd/execute-desktop-command f file-list))))) + :buffer "*helm open with*")))))) + +(defun nd/dired-sort-by () + "Sort current dired buffer by a list of choices presented in helm menu. +Note this assumes there are no sorting switches on `dired-ls'" + (interactive) + (let ((sort-alist '(("Name" . "") + ("Date" . "-t") + ("Size" . "-S") + ("Extension" . "-X") + ("Dirs First" . "--group-directories-first")))) + (helm + :sources + (helm-build-sync-source "Switches" + :candidates sort-alist + :action + '(("Sort" . (lambda (s) (dired-sort-other (concat dired-listing-switches " " s)))))) + :buffer "*helm sort buffer*"))) +#+END_SRC +*** compression +Only supports tar.gz, tar.bz2, tar.xz, and .zip by default. Add support for more fun algos such as lzo and zpaq +#+BEGIN_SRC emacs-lisp +(if (file-exists-p "/usr/bin/7z") + (add-to-list 'dired-compress-files-alist + '("\\.7z\\'" . "7z a %o %i"))) + +(if (file-exists-p "/usr/bin/lrzip") + (progn + (add-to-list 'dired-compress-files-alist + '("\\.lrz\\'" . "lrzip -L 9 -o %o %i &")) + (add-to-list 'dired-compress-files-alist + '("\\.lzo\\'" . "lrzip -l -L 9 -o %o %i &")) + (add-to-list 'dired-compress-files-alist + '("\\.zpaq\\'" . "lrzip -z -L 9 -o %o %i &")))) + +;; NOTE: this must be after the shorter lrz algos otherwise it will +;; always default to .lrz and not .tar.lrz +(if (file-exists-p "/usr/bin/lrztar") + (progn + (add-to-list 'dired-compress-files-alist + '("\\.tar\\.lrz\\'" . "lrztar -L 9 -o %o %i &")) + (add-to-list 'dired-compress-files-alist + '("\\.tar\\.lzo\\'" . "lrztar -l -L 9 -o %o %i &")) + (add-to-list 'dired-compress-files-alist + '("\\.tar\\.zpaq\\'" . "lrztar -z -L 9 -o %o %i &")))) +#+END_SRC +*** formatting for humans +make sizes human readable +#+BEGIN_SRC emacs-lisp +(setq dired-listing-switches "-Alh") +#+END_SRC +** mu4e +*** basic #+BEGIN_SRC emacs-lisp (require 'mu4e) (require 'smtpmail) @@ -1786,7 +1787,7 @@ set as a text property for further sorting" user-full-name "Nate Dwarshuis") #+END_SRC -** headers view +*** headers view #+BEGIN_SRC emacs-lisp (setq mu4e-headers-fields '((:human-date . 11) (:flags . 5) @@ -1796,7 +1797,7 @@ set as a text property for further sorting" mu4e-headers-time-format "%R" mu4e-use-fancy-chars nil) #+END_SRC -** contexts +*** contexts I have current have three contexts, personal and two work accounts. The first is a gmail account and the second/third are office365 accounts. #+BEGIN_SRC emacs-lisp (setq mu4e-context-policy 'pick-first @@ -1873,7 +1874,7 @@ I have current have three contexts, personal and two work accounts. The first is ("/emory/drafts" . ?d) ("/emory/archive" . ?a))))))) #+END_SRC -** org-mu4e +*** org-mu4e #+BEGIN_SRC emacs-lisp (use-package org-mu4e :after (org mu4e) @@ -1884,7 +1885,7 @@ I have current have three contexts, personal and two work accounts. The first is ;; for composing rich-text emails using org mode org-mu4e-convert-to-html t)) #+END_SRC -* bibtex +** bibtex #+BEGIN_SRC emacs-lisp (use-package helm-bibtex :ensure t @@ -1894,13 +1895,13 @@ I have current have three contexts, personal and two work accounts. The first is bibtex-completion-library-path (expand-file-name "~/BibTeX/pdf") bibtex-completion-pdf-field "File")) #+END_SRC -* shell +** shell #+begin_src emacs-lisp (defadvice ansi-term (before force-bash) (interactive (list "/bin/zsh"))) (ad-activate 'ansi-term) #+END_SRC -* ediff +** ediff #+BEGIN_SRC emacs-lisp (setq ediff-window-setup-function 'ediff-setup-windows-plain) #+END_SRC