diff --git a/emacs/.spacemacs b/emacs/.spacemacs new file mode 100644 index 0000000..e6e4b17 --- /dev/null +++ b/emacs/.spacemacs @@ -0,0 +1,871 @@ +;; -*- mode: emacs-lisp -*- +;; This file is loaded by Spacemacs at startup. +;; It must be stored in your home directory. + +(defun dotspacemacs/layers () + "Layer configuration: +This function should only modify configuration layer settings." + (setq-default + ;; Base distribution to use. This is a layer contained in the directory + ;; `+distribution'. For now available distributions are `spacemacs-base' + ;; or `spacemacs'. (default 'spacemacs) + dotspacemacs-distribution 'spacemacs + + ;; Lazy installation of layers (i.e. layers are installed only when a file + ;; with a supported type is opened). Possible values are `all', `unused' + ;; and `nil'. `unused' will lazy install only unused layers (i.e. layers + ;; not listed in variable `dotspacemacs-configuration-layers'), `all' will + ;; lazy install any layer that support lazy installation even the layers + ;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy + ;; installation feature and you have to explicitly list a layer in the + ;; variable `dotspacemacs-configuration-layers' to install it. + ;; (default 'unused) + dotspacemacs-enable-lazy-installation 'unused + + ;; If non-nil then Spacemacs will ask for confirmation before installing + ;; a layer lazily. (default t) + dotspacemacs-ask-for-lazy-installation t + + ;; If non-nil layers with lazy install support are lazy installed. + ;; List of additional paths where to look for configuration layers. + ;; Paths must have a trailing slash (i.e. `~/.mycontribs/') + dotspacemacs-configuration-layer-path '() + + ;; List of configuration layers to load. + dotspacemacs-configuration-layers + '(rust + ruby + helm + emacs-lisp + ; extra layers + python + auto-completion + better-defaults + git + markdown + notmuch + (org :variables + org-enable-priority-commands t + org-enable-reveal-js-support t + org-enable-github-support t + org-enable-hugo-support t + org-enable-org-journal-support t) + shell + spell-checking + (syntax-checking :variables + syntax-checking-enable-by-default t) + version-control + ansible + asciidoc + bm + lsp + (colors :variables + colors-enable-nyan-cat-progress-bar t) + csv + osx + docker + (elfeed :variables + rmh-elfeed-org-files (list "~/org/feeds.org")) + html + javascript + ;;mastodon + github + go + gtags + (python :variables + python-backend 'lsp) + restclient + react + pass + scheme + spotify + search-engine + theming + terraform + typography + tmux + yaml + ) + + ;; List of additional packages that will be installed without being + ;; wrapped in a layer. If you need some configuration for these + ;; packages, then consider creating a layer. You can also put the + ;; configuration in `dotspacemacs/user-config'. + ;; To use a local version of a package, use the `:location' property: + ;; '(your-package :location "~/path/to/your-package/") + ;; Also include the dependencies as they will not be resolved automatically. + dotspacemacs-additional-packages '( + beacon + blacken + direnv + all-the-icons + all-the-icons-dired + doom-themes + forecast + git-link + w3m + orgbox + eww + olivetti + helm-eww + line-reminder + org-web-tools + org-gcal + atomic-chrome + swiper + rjsx-mode + (declutter :location (recipe + :fetcher github + :repo "sanel/declutter")) + ) + + ;; A list of packages that cannot be updated. + dotspacemacs-frozen-packages '() + + ;; A list of packages that will not be installed and loaded. + dotspacemacs-excluded-packages '() + + ;; Defines the behaviour of Spacemacs when installing packages. + ;; Possible values are `used-only', `used-but-keep-unused' and `all'. + ;; `used-only' installs only explicitly used packages and deletes any unused + ;; packages as well as their unused dependencies. `used-but-keep-unused' + ;; installs only the used packages but won't delete unused ones. `all' + ;; installs *all* packages supported by Spacemacs and never uninstalls them. + ;; (default is `used-only') + dotspacemacs-install-packages 'used-only)) + +(defun dotspacemacs/init () + "Initialization: +This function is called at the very beginning of Spacemacs startup, +before layer configuration. +It should only modify the values of Spacemacs settings." + ;; This setq-default sexp is an exhaustive list of all the supported + ;; spacemacs settings. + (setq-default + ;; If non-nil then enable support for the portable dumper. You'll need + ;; to compile Emacs 27 from source following the instructions in file + ;; EXPERIMENTAL.org at to root of the git repository. + ;; (default nil) + dotspacemacs-enable-emacs-pdumper nil + + ;; File path pointing to emacs 27.1 executable compiled with support + ;; for the portable dumper (this is currently the branch pdumper). + ;; (default "emacs-27.0.50") + dotspacemacs-emacs-pdumper-executable-file "emacs-27.0.50" + + ;; Name of the Spacemacs dump file. This is the file will be created by the + ;; portable dumper in the cache directory under dumps sub-directory. + ;; To load it when starting Emacs add the parameter `--dump-file' + ;; when invoking Emacs 27.1 executable on the command line, for instance: + ;; ./emacs --dump-file=~/.emacs.d/.cache/dumps/spacemacs.pdmp + ;; (default spacemacs.pdmp) + dotspacemacs-emacs-dumper-dump-file "spacemacs.pdmp" + + ;; If non-nil ELPA repositories are contacted via HTTPS whenever it's + ;; possible. Set it to nil if you have no way to use HTTPS in your + ;; environment, otherwise it is strongly recommended to let it set to t. + ;; This variable has no effect if Emacs is launched with the parameter + ;; `--insecure' which forces the value of this variable to nil. + ;; (default t) + dotspacemacs-elpa-https t + + ;; Maximum allowed time in seconds to contact an ELPA repository. + ;; (default 5) + dotspacemacs-elpa-timeout 5 + + ;; Set `gc-cons-threshold' and `gc-cons-percentage' when startup finishes. + ;; This is an advanced option and should not be changed unless you suspect + ;; performance issues due to garbage collection operations. + ;; (default '(100000000 0.1)) + dotspacemacs-gc-cons '(100000000 0.1) + + ;; If non-nil then Spacelpa repository is the primary source to install + ;; a locked version of packages. If nil then Spacemacs will install the + ;; latest version of packages from MELPA. (default nil) + dotspacemacs-use-spacelpa nil + + ;; If non-nil then verify the signature for downloaded Spacelpa archives. + ;; (default nil) + dotspacemacs-verify-spacelpa-archives nil + + ;; If non-nil then spacemacs will check for updates at startup + ;; when the current branch is not `develop'. Note that checking for + ;; new versions works via git commands, thus it calls GitHub services + ;; whenever you start Emacs. (default nil) + dotspacemacs-check-for-update nil + + ;; If non-nil, a form that evaluates to a package directory. For example, to + ;; use different package directories for different Emacs versions, set this + ;; to `emacs-version'. (default 'emacs-version) + dotspacemacs-elpa-subdirectory 'emacs-version + + ;; One of `vim', `emacs' or `hybrid'. + ;; `hybrid' is like `vim' except that `insert state' is replaced by the + ;; `hybrid state' with `emacs' key bindings. The value can also be a list + ;; with `:variables' keyword (similar to layers). Check the editing styles + ;; section of the documentation for details on available variables. + ;; (default 'vim) + dotspacemacs-editing-style 'vim + + ;; If non-nil output loading progress in `*Messages*' buffer. (default nil) + dotspacemacs-verbose-loading nil + + ;; Specify the startup banner. Default value is `official', it displays + ;; the official spacemacs logo. An integer value is the index of text + ;; banner, `random' chooses a random text banner in `core/banners' + ;; directory. A string value must be a path to an image format supported + ;; by your Emacs build. + ;; If the value is nil then no banner is displayed. (default 'official) + dotspacemacs-startup-banner 'official + + ;; List of items to show in startup buffer or an association list of + ;; the form `(list-type . list-size)`. If nil then it is disabled. + ;; Possible values for list-type are: + ;; `recents' `bookmarks' `projects' `agenda' `todos'. + ;; List sizes may be nil, in which case + ;; `spacemacs-buffer-startup-lists-length' takes effect. + dotspacemacs-startup-lists '((recents . 5) + (projects . 7)) + + ;; True if the home buffer should respond to resize events. (default t) + dotspacemacs-startup-buffer-responsive t + + ;; Default major mode of the scratch buffer (default `text-mode') + dotspacemacs-scratch-mode 'text-mode + + ;; Initial message in the scratch buffer, such as "Welcome to Spacemacs!" + ;; (default nil) + dotspacemacs-initial-scratch-message nil + + ;; List of themes, the first of the list is loaded when spacemacs starts. + ;; Press `SPC T n' to cycle to the next theme in the list (works great + ;; with 2 themes variants, one dark and one light) + dotspacemacs-themes '(spacemacs-dark + spacemacs-light) + + ;; Set the theme for the Spaceline. Supported themes are `spacemacs', + ;; `all-the-icons', `custom', `vim-powerline' and `vanilla'. The first three + ;; are spaceline themes. `vanilla' is default Emacs mode-line. `custom' is a + ;; user defined themes, refer to the DOCUMENTATION.org for more info on how + ;; to create your own spaceline theme. Value can be a symbol or list with\ + ;; additional properties. + ;; (default '(spacemacs :separator wave :separator-scale 1.5)) + dotspacemacs-mode-line-theme '(spacemacs :separator wave :separator-scale 1.2) + + ;; If non-nil the cursor color matches the state color in GUI Emacs. + ;; (default t) + dotspacemacs-colorize-cursor-according-to-state t + + ;; Default font, or prioritized list of fonts. `powerline-scale' allows to + ;; quickly tweak the mode-line size to make separators look not too crappy. + dotspacemacs-default-font '("Inconsolata Nerd Font" + :size 18 + :weight normal + :width normal) + + ;; The leader key (default "SPC") + dotspacemacs-leader-key "SPC" + + ;; The key used for Emacs commands `M-x' (after pressing on the leader key). + ;; (default "SPC") + dotspacemacs-emacs-command-key "SPC" + + ;; The key used for Vim Ex commands (default ":") + dotspacemacs-ex-command-key ":" + + ;; The leader key accessible in `emacs state' and `insert state' + ;; (default "M-m") + dotspacemacs-emacs-leader-key "M-m" + + ;; Major mode leader key is a shortcut key which is the equivalent of + ;; pressing ` m`. Set it to `nil` to disable it. (default ",") + dotspacemacs-major-mode-leader-key "," + + ;; Major mode leader key accessible in `emacs state' and `insert state'. + ;; (default "C-M-m") + dotspacemacs-major-mode-emacs-leader-key "C-M-m" + + ;; These variables control whether separate commands are bound in the GUI to + ;; the key pairs `C-i', `TAB' and `C-m', `RET'. + ;; Setting it to a non-nil value, allows for separate commands under `C-i' + ;; and TAB or `C-m' and `RET'. + ;; In the terminal, these pairs are generally indistinguishable, so this only + ;; works in the GUI. (default nil) + dotspacemacs-distinguish-gui-tab nil + + ;; Name of the default layout (default "Default") + dotspacemacs-default-layout-name "Default" + + ;; If non-nil the default layout name is displayed in the mode-line. + ;; (default nil) + dotspacemacs-display-default-layout nil + + ;; If non-nil then the last auto saved layouts are resumed automatically upon + ;; start. (default nil) + dotspacemacs-auto-resume-layouts nil + + ;; If non-nil, auto-generate layout name when creating new layouts. Only has + ;; effect when using the "jump to layout by number" commands. (default nil) + dotspacemacs-auto-generate-layout-names nil + + ;; Size (in MB) above which spacemacs will prompt to open the large file + ;; literally to avoid performance issues. Opening a file literally means that + ;; no major mode or minor modes are active. (default is 1) + dotspacemacs-large-file-size 1 + + ;; Location where to auto-save files. Possible values are `original' to + ;; auto-save the file in-place, `cache' to auto-save the file to another + ;; file stored in the cache directory and `nil' to disable auto-saving. + ;; (default 'cache) + dotspacemacs-auto-save-file-location 'cache + + ;; Maximum number of rollback slots to keep in the cache. (default 5) + dotspacemacs-max-rollback-slots 5 + + ;; If non-nil, the paste transient-state is enabled. While enabled, pressing + ;; `p' several times cycles through the elements in the `kill-ring'. + ;; (default nil) + dotspacemacs-enable-paste-transient-state nil + + ;; Which-key delay in seconds. The which-key buffer is the popup listing + ;; the commands bound to the current keystroke sequence. (default 0.4) + dotspacemacs-which-key-delay 0.4 + + ;; Which-key frame position. Possible values are `right', `bottom' and + ;; `right-then-bottom'. right-then-bottom tries to display the frame to the + ;; right; if there is insufficient space it displays it at the bottom. + ;; (default 'bottom) + dotspacemacs-which-key-position 'bottom + + ;; Control where `switch-to-buffer' displays the buffer. If nil, + ;; `switch-to-buffer' displays the buffer in the current window even if + ;; another same-purpose window is available. If non-nil, `switch-to-buffer' + ;; displays the buffer in a same-purpose window even if the buffer can be + ;; displayed in the current window. (default nil) + dotspacemacs-switch-to-buffer-prefers-purpose nil + + ;; If non-nil a progress bar is displayed when spacemacs is loading. This + ;; may increase the boot time on some systems and emacs builds, set it to + ;; nil to boost the loading time. (default t) + dotspacemacs-loading-progress-bar t + + ;; If non-nil the frame is fullscreen when Emacs starts up. (default nil) + ;; (Emacs 24.4+ only) + dotspacemacs-fullscreen-at-startup nil + + ;; If non-nil `spacemacs/toggle-fullscreen' will not use native fullscreen. + ;; Use to disable fullscreen animations in OSX. (default nil) + dotspacemacs-fullscreen-use-non-native nil + + ;; If non-nil the frame is maximized when Emacs starts up. + ;; Takes effect only if `dotspacemacs-fullscreen-at-startup' is nil. + ;; (default nil) (Emacs 24.4+ only) + dotspacemacs-maximized-at-startup nil + + ;; A value from the range (0..100), in increasing opacity, which describes + ;; the transparency level of a frame when it's active or selected. + ;; Transparency can be toggled through `toggle-transparency'. (default 90) + dotspacemacs-active-transparency 90 + + ;; A value from the range (0..100), in increasing opacity, which describes + ;; the transparency level of a frame when it's inactive or deselected. + ;; Transparency can be toggled through `toggle-transparency'. (default 90) + dotspacemacs-inactive-transparency 90 + + ;; If non-nil show the titles of transient states. (default t) + dotspacemacs-show-transient-state-title t + + ;; If non-nil show the color guide hint for transient state keys. (default t) + dotspacemacs-show-transient-state-color-guide t + + ;; If non-nil unicode symbols are displayed in the mode line. + ;; If you use Emacs as a daemon and wants unicode characters only in GUI set + ;; the value to quoted `display-graphic-p'. (default t) + dotspacemacs-mode-line-unicode-symbols t + + ;; If non-nil smooth scrolling (native-scrolling) is enabled. Smooth + ;; scrolling overrides the default behavior of Emacs which recenters point + ;; when it reaches the top or bottom of the screen. (default t) + dotspacemacs-smooth-scrolling t + + ;; Control line numbers activation. + ;; If set to `t' or `relative' line numbers are turned on in all `prog-mode' and + ;; `text-mode' derivatives. If set to `relative', line numbers are relative. + ;; This variable can also be set to a property list for finer control: + ;; '(:relative nil + ;; :disabled-for-modes dired-mode + ;; doc-view-mode + ;; markdown-mode + ;; org-mode + ;; pdf-view-mode + ;; text-mode + ;; :size-limit-kb 1000) + ;; (default nil) + dotspacemacs-line-numbers 'relative + + ;; Code folding method. Possible values are `evil' and `origami'. + ;; (default 'evil) + dotspacemacs-folding-method 'evil + + ;; If non-nil `smartparens-strict-mode' will be enabled in programming modes. + ;; (default nil) + dotspacemacs-smartparens-strict-mode nil + + ;; If non-nil pressing the closing parenthesis `)' key in insert mode passes + ;; over any automatically added closing parenthesis, bracket, quote, etc… + ;; This can be temporary disabled by pressing `C-q' before `)'. (default nil) + dotspacemacs-smart-closing-parenthesis nil + + ;; Select a scope to highlight delimiters. Possible values are `any', + ;; `current', `all' or `nil'. Default is `all' (highlight any scope and + ;; emphasis the current one). (default 'all) + dotspacemacs-highlight-delimiters 'all + + ;; If non-nil, start an Emacs server if one is not already running. + ;; (default nil) + dotspacemacs-enable-server nil + + ;; Set the emacs server socket location. + ;; If nil, uses whatever the Emacs default is, otherwise a directory path + ;; like \"~/.emacs.d/server\". It has no effect if + ;; `dotspacemacs-enable-server' is nil. + ;; (default nil) + dotspacemacs-server-socket-dir nil + + ;; If non-nil, advise quit functions to keep server open when quitting. + ;; (default nil) + dotspacemacs-persistent-server nil + + ;; List of search tool executable names. Spacemacs uses the first installed + ;; tool of the list. Supported tools are `rg', `ag', `pt', `ack' and grep'. + ;; (default '("rg" "ag" "pt" "ack" "grep")) + dotspacemacs-search-tools '("rg" "ag" "pt" "ack" "grep") + + ;; Format specification for setting the frame title. + ;; %a - the `abbreviated-file-name', or `buffer-name' + ;; %t - `projectile-project-name' + ;; %I - `invocation-name' + ;; %S - `system-name' + ;; %U - contents of $USER + ;; %b - buffer name + ;; %f - visited file name + ;; %F - frame name + ;; %s - process status + ;; %p - percent of buffer above top of window, or Top, Bot or All + ;; %P - percent of buffer above bottom of window, perhaps plus Top, or Bot or All + ;; %m - mode name + ;; %n - Narrow if appropriate + ;; %z - mnemonics of buffer, terminal, and keyboard coding systems + ;; %Z - like %z, but including the end-of-line format + ;; (default "%I@%S") + dotspacemacs-frame-title-format "%I@%S" + + ;; Format specification for setting the icon title format + ;; (default nil - same as frame-title-format) + dotspacemacs-icon-title-format nil + + ;; Delete whitespace while saving buffer. Possible values are `all' + ;; to aggressively delete empty line and long sequences of whitespace, + ;; `trailing' to delete only the whitespace at end of lines, `changed' to + ;; delete only whitespace for changed lines or `nil' to disable cleanup. + ;; (default nil) + dotspacemacs-whitespace-cleanup nil + + ;; Either nil or a number of seconds. If non-nil zone out after the specified + ;; number of seconds. (default nil) + dotspacemacs-zone-out-when-idle nil + + ;; Run `spacemacs/prettify-org-buffer' when + ;; visiting README.org files of Spacemacs. + ;; (default nil) + dotspacemacs-pretty-docs nil)) + +(defun dotspacemacs/user-env () + "Environment variables setup. +This function defines the environment variables for your Emacs session. By +default it calls `spacemacs/load-spacemacs-env' which loads the environment +variables declared in `~/.spacemacs.env' or `~/.spacemacs.d/.spacemacs.env'. +See the header of this file for more information." + (spacemacs/load-spacemacs-env)) + +(defun dotspacemacs/user-init () + "Initialization for user code: +This function is called immediately after `dotspacemacs/init', before layer +configuration. +It is mostly for variables that should be set before packages are loaded. +If you are unsure, try setting them in `dotspacemacs/user-config' first." + ) + +(defun dotspacemacs/user-load () + "Library to load while dumping. +This function is called only while dumping Spacemacs configuration. You can +`require' or `load' the libraries of your choice that will be included in the +dump." + ) + +(defun dotspacemacs/user-config () + "Configuration for user code: +This function is called at the very end of Spacemacs startup, after layer +configuration. +Put your configuration code here, except for variables that should be set +before packages are loaded." + (global-set-key (kbd "") 'shrink-window) + (global-set-key (kbd "") 'enlarge-window) + (global-set-key (kbd "") 'shrink-window-horizontally) + (global-set-key (kbd "") 'enlarge-window-horizontally) + + (setq mastodon-instance-url "https://mastodon.technology") + + ; Set consistent 2-space indenting in JS and JSX files + (setq-default + ;; js2-mode + js2-basic-offset 2 + ;; web-mode + css-indent-offset 2 + web-mode-markup-indent-offset 2 + web-mode-css-indent-offset 2 + web-mode-code-indent-offset 2 + web-mode-attr-indent-offset 2) + + ; Speed up cursor + (setq auto-window-vscroll nil) + + ; Auto format python on save ... helpful, but not in collab repos :) + ;(setq-default dotspacemacs-configuration-layers '((python :variables python-enable-yapf-format-on-save t))) + (setq python-shell-interpreter "python3") + (setq python-indent-offset 4) + + ; Becaons! + (beacon-mode 1) + (setq beacon-color "#00FFFF") + + ;; Set magit autocompletion + (setq magit-repository-directories '("~/devel/")) + + ;; packages + (when (>= emacs-major-version 24) + (require 'package) + (package-initialize) + (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) + ) + + ; Add notice for lines over 80 chars + (setq-default + whitespace-line-column 88 + whitespace-style '(face lines-tail)) + (add-hook 'prog-mode-hook #'whitespace-mode) + + ;; Arrowed powerline + ;; re-saturate powerline separators + (setq ns-use-srgb-colorspace nil) + ;(setq powerline-default-separator 'utf-8) + + ;; Allow K8s access via timonier + (setq timonier-k8s-proxy "http://localhost:8001") + + (doom-themes-org-config) + (doom-themes-neotree-config) + + (setq ispell-program-name "/usr/local/bin/aspell") + + ; Load ALL THE FONTS! + (require 'all-the-icons) + (add-hook 'dired-mode-hook 'all-the-icons-dired-mode) + + (setq org-reveal-root "http://cdn.jsdelivr.net/reveal.js/3.0.0/") + + ;; Custom org-mode settings for Dropbox syncing + (require 'direnv) + + ;; Make all links actionable + ;; http://xenodium.com/#actionable-urls-in-emacs-buffers + (use-package goto-addr + :hook ((compilation-mode . goto-address-mode) + (prog-mode . goto-address-prog-mode) + (eshell-mode . goto-address-mode) + (shell-mode . goto-address-mode)) + :bind (:map goto-address-highlight-keymap + ("" . goto-address-at-point) + ("M-" . newline)) + :commands (goto-address-prog-mode + goto-address-mode)) + + (setq org-todo-keywords '((sequence "TODO(t)" "NEXT(n)" "PROJ(p)" "|" "DONE(d)") + (sequence "HOLD(h)" "|") + (sequence "|" "CANCELED(c)")) + ) + + (setq org-agenda-custom-commands + '( + ("n" todo "NEXT") + ("h" todo "HOLD") + ("d" "Agenda + Next Actions" ((agenda) (todo "NEXT"))) + )) + + (setq org-tag-alist '(("@home" . ?h) + ("@personal" . ?p) + ("@town" . ?t) + ("@farm" . ?f) + ("@church" . ?c) + ("@read" . ?r) + ("@errand" . ?e) + ("@office" . ?w)) + ) + + (setq confluence-url "https://elationhealth.atlassian.net/wiki/rpc/xmlrpc") + + (setq spaceline-org-clock-p t) + + ;; org-mode visual configuration + (add-hook 'org-mode-hook (lambda () (org-bullets-mode 2))) + (setq org-agenda-files (list "~/org/todo.org" + "~/org/gcal.org" + "~/org/training.org")) + + ;(with-eval-after-load 'org-agenda + ; (require 'org-projectile) + ; (push (org-projectile:todo-files) org-agenda-files)) + + (setq org-startup-indented t + org-pretty-entities t + org-hide-emphasis-markers t + org-hide-leading-start t + ;; show actually italicized text instead of /italicized text/ + org-agenda-block-separator "" + org-fontify-whole-heading-line t + org-fontify-done-headline t + org-fontify-quote-and-verse-blocks t + org-bullets-face-name (quote org-bullet-face) + org-bullets-bullet-list '("■" "◆" "▲" "▶") + ;org-bullets-bullet-list '("✙" "♱" "♰" "☥" "✚" "✛" "✣") + ;org-ellipsis " ⬊ " + ) + + + ; Capture templates + (setq org-capture-templates + '(("i" "Send to inbox" entry (file+headline "~/org/todo.org" "Inbox") + "* TODO %?\n %i\n %a") + + ("n" "Create new note" entry (file "~/org/notes.org") + "* %?\nEntered on %U\n %i\n %a") + + ("e" "Elation related note" entry (file "~/org/elation.org") + "* %?\nEntered on %U\n %i\n %a") + + ("g" "Add glossary note" entry (file "~/org/glossary.org") + "* %?\nEntered on %U\n %i\n") + + ("d" "Add an idea" entry (file "~/org/ideas.org") + "* %?\nEntered on %U\n %i\n") + + )) + + ; keep track when you move a deadline or reschedule a task + ;(setq org-log-redeadline (quote time)) + ;(setq org-log-reschedule (quote time)) + + (setq org-refile-targets '(("~/org/todo.org" :maxlevel . 3) + ("~/org/someday.org" :maxlevel . 2) + ("~/org/gcal.org" :maxlevel . 1))) + + ;; make the lines in the buffer wrap around the edges of the screen. + (add-hook 'org-mode-hook '(lambda () (visual-line-mode))) + + ; attempt to return todo function to spacemacs + (setq evil-org-key-theme '(textobjects navigation additional insert todo)) + + (setq org-modules '(org-drill + org-info + org-habit + org-protocol + org-annotate-file + org-eval + org-expiry + org-man + org-collector + org-panel + org-screen + org-toc)) + + ;; Set default column view headings: Task Total-Time Time-Stamp + (setq org-columns-default-format "%50ITEM(Task) %10CLOCKSUM %16TIMESTAMP_IA") + + (setq org-use-fast-todo-selection t) + + ;; org-journal directory + (setq org-journal-dir "~/org/journal/") + + ;;; We apparently need this to get MU4E to load + ;(setq mu4e-mu-binary "/usr/local/bin/mu") + ;(let ((default-directory "/usr/local/share/emacs/site-lisp/")) + ; (normal-top-level-add-subdirs-to-load-path)) + + ;;; MU4E settings + ;(setq mu4e-maildir "~/.mail/protonmail" + ; mu4e-trash-folder "/Trash" + ; mu4e-sent-folder "/Sent" + ; mu4e-drafts-folder "/Drafts" + ; mu4e-spam-folder "/Spam" + ; mu4e-refile-folder "/Archive" + ; mu4e-attachment-dir "~/Downloads" + ; mu4e-get-mail-command "offlineimap" + ; mu4e-update-interval 1500 + ; mu4e-confirm-quit nil + ; mu4e-compose-format-flowed t + ; mu4e-enable-notifications t + ; mu4e-compose-signature-auto-include nil + ; mu4e-view-show-images t + ; message-kill-buffer-on-exit t + ; mu4e-view-show-addresses t) + + ;;; Setup our sent folder, with some smtpmail config in there + ;(setq mu4e-sent-folder "/Sent" + ; ;; mu4e-sent-messages-behavior 'delete ;; Unsure how this should be configured + ; mu4e-drafts-folder "/Drafts" + ; user-mail-address "colin@onec.me" + ; smtpmail-default-smtp-server "localhost" + ; smtpmail-local-domain "localhost" + ; smtpmail-smtp-user "colin@onec.me" + ; smtpmail-debug-info t + ; smtpmail-smtp-server "localhost" + ; smtpmail-smtp-service 1025) + + ;;;; Mail directory shortcuts + ;(setq mu4e-maildir-shortcuts + ; '(("/INBOX" . ?i) + ; ("/Archive" . ?a))) + + ;;;; Bookmarks + ;(setq mu4e-bookmarks + ; `(("flag:unread AND NOT flag:trashed" "Unread messages" ?u) + ; ("date:today..now AND NOT flag:trashed" "Today's messages" ?t) + ; ("date:7d..now AND NOT flag:trashed" "Last 7 days" ?w) + ; ("mime:image/*" "Messages with images" ?p) + ; (,(mapconcat 'identity + ; (mapcar + ; (lambda (maildir) + ; (concat "maildir:" (car maildir))) + ; mu4e-maildir-shortcuts) " OR ") + ; "All inboxes" ?i))) + + + ;;; quickmarks for notmuch + ;(define-key notmuch-show-mode-map "d" + ; (lambda () + ; "toggle deleted tag for message" + ; (interactive) + ; (if (member "deleted" (notmuch-show-get-tags)) + ; (notmuch-show-tag (list "-deleted")) + ; (notmuch-show-tag (list "+deleted"))))) + + ;(define-key notmuch-show-mode-map "n" + ; (lambda () + ; "toggle new tag for message" + ; (interactive) + ; (if (member "new" (notmuch-show-get-tags)) + ; (notmuch-show-tag (list "-new")) + ; (notmuch-show-tag (list "+new"))))) + + ; Use w3m to parse HTML email + (setq mm-text-html-renderer 'w3m) + (setq w3m-fill-column 72) + + ; Kill email message buffers when you close them + (setq message-kill-buffer-on-exit t) + (setq message-default-mail-headers "Cc: \nBcc: \n") + (setq message-auto-save-directory "~/Mail/colin@onec.me/Drafts/") + (setq message-directory "~/Mail/colin@onec.me/") + + ;;; Setup sending email with msmtp + (setq send-mail-function 'sendmail-send-it + sendmail-program "/usr/local/bin/msmtp" + mail-specify-envelope-from t + message-sendmail-envelope-from 'header + mail-envelope-from 'header) + + ;;;; Adjust how mu4e marks a message for deletion + ;(defun remove-nth-element (nth list) + ; (if (zerop nth) (cdr list) + ; (let ((last (nthcdr (1- nth) list))) + ; (setcdr last (cddr last)) + ; list))) + ;(setq mu4e-marks (remove-nth-element 5 mu4e-marks)) + ;(add-to-list 'mu4e-marks + ; '(trash + ; :char ("d" . "▼") + ; :prompt "dtrash" + ; :dyn-target (lambda (target msg) (mu4e-get-trash-folder msg)) + ; :action (lambda (docid msg target) + ; (mu4e~proc-move docid + ; (mu4e~mark-check-target target) "-N")))) + ;; Clean up elfeed entry buffer + (setq elfeed-show-mode-hook + (lambda () + (set-face-attribute 'variable-pitch (selected-frame) :font (font-spec :family "Hack" :size 14)) + (setq fill-column 80) + (setq elfeed-show-entry-switch #'my-show-elfeed))) + + (defun my-show-elfeed (buffer) + (with-current-buffer buffer + (setq buffer-read-only nil) + (goto-char (point-min)) + (re-search-forward "\n\n") + (fill-individual-paragraphs (point) (point-max)) + (setq buffer-read-only t)) + (switch-to-buffer buffer)) + + ;; Enable atomic chrome to fill text boxes in browsers + (require 'atomic-chrome) + ;(atomic-chrome-start-server) + (setq atomic-chrome-buffer-open-style 'split) + + (org-babel-do-load-languages + 'org-babel-load-languages + '((sql . t))) + ) + +;; Do not write anything past this comment. This is where Emacs will +;; auto-generate custom variable definitions. +(defun dotspacemacs/emacs-custom-settings () + "Emacs custom settings. +This is an auto-generated function, do not modify its content directly, use +Emacs customize menu instead. +This function is called at the very end of Spacemacs initialization." +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(evil-want-Y-yank-to-eol nil) + '(org-agenda-files + (quote + ("~/org/todo.org" "~/org/gcal.org" "~/org/training.org"))) + '(package-selected-packages + (quote + (orgbox w3m olivetti treepy graphql declutter all-the-icons memoize org-super-agenda yapfify yaml-mode xterm-color ws-butler winum which-key web-mode web-beautify volatile-highlights vi-tilde-fringe uuidgen use-package unfill typo toml-mode toc-org terraform-mode hcl-mode tagedit swiper ivy spotify spaceline smeargle slim-mode shell-pop scss-mode sass-mode rvm ruby-tools ruby-test-mode rubocop rspec-mode robe rjsx-mode reveal-in-osx-finder restclient-helm restart-emacs rbenv rake rainbow-mode rainbow-identifiers rainbow-delimiters racer pyvenv pytest pyenv-mode py-isort pug-mode pip-requirements persp-mode pcre2el pbcopy paradox spinner ox-reveal ox-gfm osx-trash osx-dictionary orgit org-web-tools esxml org-projectile org-category-capture org-present org-pomodoro org-mime org-gcal request-deferred deferred org-download org-bullets open-junk-file ob-restclient ob-http neotree mwim multi-term mu4e-maildirs-extension mu4e-alert alert log4e gntp move-text mmm-mode minitest markdown-toc magit-gitflow magit-gh-pulls macrostep lorem-ipsum livid-mode skewer-mode live-py-mode linum-relative link-hint line-reminder launchctl js2-refactor multiple-cursors js2-mode js-doc jinja2-mode indent-guide hydra hy-mode hungry-delete htmlize hl-todo highlight-parentheses highlight-numbers parent-mode highlight-indentation helm-themes helm-swoop helm-spotify-plus multi helm-pydoc helm-projectile helm-mode-manager helm-make projectile helm-gtags helm-gitignore request helm-flx helm-eww helm-descbinds helm-css-scss helm-company helm-c-yasnippet helm-ag haml-mode google-translate golden-ratio go-guru go-eldoc gnuplot gitignore-mode github-search github-clone github-browse-file gitconfig-mode gitattributes-mode git-timemachine git-messenger git-link git-gutter-fringe+ git-gutter-fringe fringe-helper git-gutter+ git-gutter gist gh marshal logito pcache ht gh-md ggtags geiser fuzzy forecast flyspell-correct-helm flyspell-correct flycheck-rust flycheck-pos-tip pos-tip flycheck pkg-info epl flx-ido flx fill-column-indicator fancy-battery eyebrowse expand-region exec-path-from-shell evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-surround evil-search-highlight-persist evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-magit magit git-commit ghub evil-lisp-state smartparens evil-indent-plus evil-iedit-state iedit evil-exchange evil-escape evil-ediff evil-args evil-anzu anzu evil goto-chg undo-tree eval-sexp-fu highlight eshell-z eshell-prompt-extras esh-help engine-mode emmet-mode elisp-slime-nav elfeed-web simple-httpd elfeed-org elfeed-goodies ace-jump-mode noflet powerline popwin elfeed dumb-jump dockerfile-mode docker json-mode tablist magit-popup docker-tramp json-snatcher json-reformat direnv with-editor diminish diff-hl cython-mode csv-mode company-web web-completion-data company-tern dash-functional tern company-statistics company-restclient restclient know-your-http-well company-go go-mode company-ansible company-anaconda company column-enforce-mode color-identifiers-mode coffee-mode clean-aindent-mode chruby cargo markdown-mode rust-mode bundler inf-ruby blacken bind-map bind-key beacon auto-yasnippet yasnippet auto-highlight-symbol auto-dictionary auto-compile packed atomic-chrome websocket ansible-doc ansible anaconda-mode pythonic f s all-the-icons-dired aggressive-indent adoc-mode markup-faces adaptive-wrap ace-window ace-link ace-jump-helm-line helm avy helm-core async ac-ispell auto-complete popup doom-themes dash)))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + ) +) +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(evil-want-Y-yank-to-eol nil) + '(org-agenda-files + (quote + ("~/org/todo.org" "~/org/gcal.org" "~/org/training.org"))) + '(package-selected-packages + (quote + (w3m olivetti treepy graphql declutter all-the-icons memoize org-super-agenda yapfify yaml-mode xterm-color ws-butler winum which-key web-mode web-beautify volatile-highlights vi-tilde-fringe uuidgen use-package unfill typo toml-mode toc-org terraform-mode hcl-mode tagedit swiper ivy spotify spaceline smeargle slim-mode shell-pop scss-mode sass-mode rvm ruby-tools ruby-test-mode rubocop rspec-mode robe rjsx-mode reveal-in-osx-finder restclient-helm restart-emacs rbenv rake rainbow-mode rainbow-identifiers rainbow-delimiters racer pyvenv pytest pyenv-mode py-isort pug-mode pip-requirements persp-mode pcre2el pbcopy paradox spinner ox-reveal ox-gfm osx-trash osx-dictionary orgit org-web-tools esxml org-projectile org-category-capture org-present org-pomodoro org-mime org-gcal request-deferred deferred org-download org-bullets open-junk-file ob-restclient ob-http neotree mwim multi-term mu4e-maildirs-extension mu4e-alert alert log4e gntp move-text mmm-mode minitest markdown-toc magit-gitflow magit-gh-pulls macrostep lorem-ipsum livid-mode skewer-mode live-py-mode linum-relative link-hint line-reminder launchctl js2-refactor multiple-cursors js2-mode js-doc jinja2-mode indent-guide hydra hy-mode hungry-delete htmlize hl-todo highlight-parentheses highlight-numbers parent-mode highlight-indentation helm-themes helm-swoop helm-spotify-plus multi helm-pydoc helm-projectile helm-mode-manager helm-make projectile helm-gtags helm-gitignore request helm-flx helm-eww helm-descbinds helm-css-scss helm-company helm-c-yasnippet helm-ag haml-mode google-translate golden-ratio go-guru go-eldoc gnuplot gitignore-mode github-search github-clone github-browse-file gitconfig-mode gitattributes-mode git-timemachine git-messenger git-link git-gutter-fringe+ git-gutter-fringe fringe-helper git-gutter+ git-gutter gist gh marshal logito pcache ht gh-md ggtags geiser fuzzy forecast flyspell-correct-helm flyspell-correct flycheck-rust flycheck-pos-tip pos-tip flycheck pkg-info epl flx-ido flx fill-column-indicator fancy-battery eyebrowse expand-region exec-path-from-shell evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-surround evil-search-highlight-persist evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-magit magit git-commit ghub evil-lisp-state smartparens evil-indent-plus evil-iedit-state iedit evil-exchange evil-escape evil-ediff evil-args evil-anzu anzu evil goto-chg undo-tree eval-sexp-fu highlight eshell-z eshell-prompt-extras esh-help engine-mode emmet-mode elisp-slime-nav elfeed-web simple-httpd elfeed-org elfeed-goodies ace-jump-mode noflet powerline popwin elfeed dumb-jump dockerfile-mode docker json-mode tablist magit-popup docker-tramp json-snatcher json-reformat direnv with-editor diminish diff-hl cython-mode csv-mode company-web web-completion-data company-tern dash-functional tern company-statistics company-restclient restclient know-your-http-well company-go go-mode company-ansible company-anaconda company column-enforce-mode color-identifiers-mode coffee-mode clean-aindent-mode chruby cargo markdown-mode rust-mode bundler inf-ruby blacken bind-map bind-key beacon auto-yasnippet yasnippet auto-highlight-symbol auto-dictionary auto-compile packed atomic-chrome websocket ansible-doc ansible anaconda-mode pythonic f s all-the-icons-dired aggressive-indent adoc-mode markup-faces adaptive-wrap ace-window ace-link ace-jump-helm-line helm avy helm-core async ac-ispell auto-complete popup doom-themes dash)))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + )