diff options
| -rw-r--r-- | default.nix | 13 | ||||
| -rw-r--r-- | sh/symlinks.sh | 4 | ||||
| -rw-r--r-- | spacemacs.el | 1106 |
3 files changed, 0 insertions, 1123 deletions
diff --git a/default.nix b/default.nix deleted file mode 100644 index 49df5750..00000000 --- a/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -with import <nixpkgs> { }; { - test = pkgs.stdenv.mkDerivation { - src = pkgs.nix-gitignore.gitignoreSource [ "!.git" ] ./.; - name = "dotfiles-test"; - phases = [ "unpackPhase" "buildPhase" ]; - buildInputs = [ nixfmt gitMinimal shellcheck ]; - buildPhase = '' - patchShebangs . - ./tests.sh - touch $out - ''; - }; -} diff --git a/sh/symlinks.sh b/sh/symlinks.sh index c4e0a276..36f74cbf 100644 --- a/sh/symlinks.sh +++ b/sh/symlinks.sh @@ -45,10 +45,6 @@ upsert_dir_symlink "$MEDIA_PREFIX/SNEAKER" ~/SNEAKER ## tmux ln -fs "$DOTFILES/tmux.conf" ~/.tmux.conf -## Emacs -mkdir -p "$HOME/.emacs.d/private/layers/" -ln -fs "$DOTFILES/spacemacs.el" ~/.spacemacs - ## vi ln -fs "$DOTFILES/exrc.conf" ~/.exrc diff --git a/spacemacs.el b/spacemacs.el deleted file mode 100644 index 7b70a261..00000000 --- a/spacemacs.el +++ /dev/null @@ -1,1106 +0,0 @@ -(defun po-with-temp-buffer (&rest _) nil) -(defun evil-set-undo-system (&rest _) nil) - -;; (defun org-time-add (&rest r) nil) - -(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 - `(dart - php - go - graphviz - systemd - asciidoc - ansible - auto-completion - better-defaults - c-c++ - common-lisp - csv - docker - elixir - erc - elm - emacs-lisp - epub - erlang - finance - git - gnus - haskell - helm - html - javascript - latex - lua - markdown - nixos - notmuch - pdf - perl5 - purescript - python - react - restclient - ruby - rust - scheme - selectric - shell-scripts - sql - swift - syntax-checking - (terraform :variables terraform-auto-format-on-save t) - typescript - unicode-fonts - version-control - windows-scripts - yaml - (clojure :variables - clojure-enable-fancify-symbols t - clojure-enable-clj-refactor t) - (org :variables - org-enable-reveal-js-support t) - (shell :variables - shell-default-height 30 - shell-default-position 'bottom) - (spell-checking :variables - spell-checking-enable-by-default t - spell-checking-enable-auto-dictionary t) - (haskell :variables - haskell-enable-hindent t - haskell-completion-backend 'dante - haskell-process-type 'cabal-new-repl)) - - ;; 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 '(paredit - po-mode - interleave - debbugs - fireplace - emidje - ob-rust - guix - direnv - nix-sandbox) - ;; 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 - - ;; If non-nil activate `snoopy-mode' which shifts your number row - ;; to match the set of signs given in `dotspacemacs-snoopy-keyrow' - ;; in programming modes (insert-mode only). (default nil) - dotspacemacs-use-snoopy-mode nil - - ;; Text of shifted values from your - ;; keyboard's number row. (default '!@#$%^&*()') - dotspacemacs-snoopy-keyrow "!@#$%^&*()")) - -(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 'hybrid - - ;; 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.5) - - ;; 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. - ;; Alternatives: "FreeMono", "Fira Code", "Default" - dotspacemacs-default-font '("Source Code Pro" - :size 16 - :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 `<leader> 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" - - ;; If non-nil, the shift mappings `<' and `>' retain visual state if used - ;; there. (default t) - dotspacemacs-retain-visual-state-on-shift t - - ;; If non-nil, `J' and `K' move lines up and down when in visual mode. - ;; (default nil) - dotspacemacs-visual-line-move-text t - - ;; 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 "home" - - ;; If non-nil the default layout name is displayed in the mode-line. - ;; (default nil) - dotspacemacs-display-default-layout t - - ;; 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 15 - - ;; 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 t - - ;; 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 t - :disabled-for-modes org-mode - pdf-view-mode - texinfo-mode - :size-limit-kb 1000) - - ;; 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 '("ag" "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 'trailing - - ;; If non nil activate `clean-aindent-mode' which tries to correct - ;; virtual indentation of simple modes. This can interfer with mode specific - ;; indent handling like has been reported for `go-mode'. - ;; If it does deactivate it here. - ;; (default t) - dotspacemacs-use-clean-aindent-mode t - - ;; If non-nil shift your number row to match the entered keyboard layout - ;; (only in insert mode). Currently the keyboard layouts - ;; (qwerty-us qwertz-de) are supported. - ;; New layouts can be added in `spacemacs-editing' layer. - ;; (default nil) - dotspacemacs-swap-number-row 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 - - ;; If nil the home buffer shows the full path of agenda items - ;; and todos. If non nil only the file name is shown. - dotspacemacs-home-shorten-agenda-source 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 set-custom-clj-indent () - "dom/* indentation rules: React/Native helper fns" - (define-clojure-indent - ;; React - (view 'defun) - (text 'defun) - (touchable-highlight 'defun) - (image 'defun) - (scroll-view 'defun) - (camera 'defun) - (li 'defun) - (ul 'defun) - (div 'defun) - (button 'defun) - (a 'defun) - (span 'defun) - (svg 'defun) - (options 'defun) - - (pipeline 1) - (stage 1) - (job 1) - - (let-entities 4) - - (action 1) - (as-user 1) - (without-logs 0) - - (tabular 'defun) - (for-all 'defun) - - (flow 1) - (facts 1) - (fact 1) - - (assoc 1))) - -(defun euandreh/clear-repl-and-eval () - (interactive) - (cider-find-and-clear-repl-output t) - (cider-eval-defun-at-point)) - -(defun euandreh/save-and-run-focused-test () - (interactive) - (save-buffer) - (spacemacs/cider-test-run-focused-test)) - -(defun euandreh/save-and-eval-buffer () - (interactive) - (save-buffer) - (cider-eval-buffer)) - -(defalias 'scissors 'message-mark-inserted-region) - -(defvar paredit-modes '(lisp-mode - lisp-interaction-mode - emacs-lisp-mode - ielm-mode - clojure-mode - cider-mode - cider-repl-mode - clojurec-mode - clojurescript-mode - clojurex-mode - cider-clojure-interaction-mode - scheme-mode)) - -(setq custom-keybindings '(("M-ç" . euandreh/find-bookmarked-files) - ("C-M-y" . helm-show-kill-ring) - ("M-[" . (lambda () (interactive) (find-file "~/tmp/scratch.txt"))) - ("M-SPC" . (lambda () (interactive) (just-one-space -1))))) - -(defvar custom-el-files '("~/annex/bin/misc/mail/notmuch.el")) - -(defmacro measure-time (&rest body) - "Measure and return the running time of the code block." - (declare (indent defun)) - (let ((start (make-symbol "start"))) - `(let ((,start (float-time))) - ,@body - (- (float-time) ,start)))) - -(defmacro comment (&rest body) - nil) - -(defun recompile-el-files () - (dolist (path custom-el-files) - (when (file-exists-p path) - (byte-compile-file path t)))) - -(defun euandreh/projectile-reload-known-projects () - (interactive) - (projectile-load-known-projects)) - -(defun euandreh/find-os-declaration-file () - (interactive) - (find-file-existing (concat (getenv "DOTFILES") "/nixos/configuration.nix"))) - -(defun euandreh/find-fake-symlinks-file () - (interactive) - (find-file-existing (concat (getenv "DOTFILES") "/sh/fake-symlinks.sh"))) - -;; Taken from: -;; https://notmuchmail.org/emacstips/#index25h2 -(defun euandreh/notmuch-show-view-as-patch () - "View the the current message as a patch." - (interactive) - (let* ((id (notmuch-show-get-message-id)) - (msg (notmuch-show-get-message-properties)) - (part (notmuch-show-get-part-properties)) - (subject (concat "Subject: " (notmuch-show-get-subject) "\n")) - (diff-default-read-only t) - (buf (get-buffer-create (concat "*notmuch-patch-" id "*"))) - (map (make-sparse-keymap))) - (define-key map "q" 'notmuch-bury-or-kill-this-buffer) - (switch-to-buffer buf) - (let ((inhibit-read-only t)) - (erase-buffer) - (insert subject) - (insert (notmuch-get-bodypart-text msg part nil))) - (set-buffer-modified-p nil) - (diff-mode) - (lexical-let ((new-ro-bind (cons 'buffer-read-only map))) - (add-to-list 'minor-mode-overriding-map-alist new-ro-bind)) - (goto-char (point-min)))) - -(defun euandreh/notmuch-copy-git-am-command () - "View the the current message as a patch." - (interactive) - (let* ((id (notmuch-show-get-message-id)) - (cmd (format "notmuch show --format=raw %s | git am" id))) - (kill-new cmd) - (message cmd))) - -(defun comp (&rest fns) - (lexical-let ((fns fns)) - (lambda (arg) - (if fns - (funcall (car fns) (funcall (apply #'comp (cdr fns)) arg)) - arg)))) - -(defun euandreh/notmuch-copy-git-send-email-command () - "View the the current message as a patch." - (interactive) - (let* ((id (notmuch-show-get-message-id t)) - (from (car (notmuch-clean-address (notmuch-show-get-from)))) - (ccs (reduce #'concat - (mapcar (comp (apply-partially #'concat " --cc=") - #'string-trim - #'car - #'notmuch-clean-address) - (split-string (notmuch-show-get-cc) ",")))) - (cmd (format "git send-email --in-reply-to=%s --to=%s%s HEAD^" id from ccs))) - (kill-new cmd) - (message cmd))) - -(defun euandreh/copy-url (ml) - (let* ((ml (if (string= ml "help-guix") - "guix-user" - ml)) - (url (format "https://yhetil.org/%s/%s" ml id))) - (kill-new url) - (message url))) - -(defvar candidates '("help-guix" - "guix-devel" - "guix-user" - "guix-science" - "gwl" - "guix-bugs" - "guix-patches")) - -(defun euandreh/notmuch-copy-archive-url () - "View the current message on the browser." - (interactive) - ;; (setq helm-kill-ring--truncated-flag nil) - (let* ((id (notmuch-show-get-message-id t)) - (tags (notmuch-show-get-tags)) - (matches (cl-intersection tags candidates :test 'string=))) - (if matches - (euandreh/copy-url (car matches)) - (helm :sources - (helm-build-sync-source "mailint lists" - :candidates candidates - :action '(("Kill Register" . euandreh/copy-url))))))) - -;; Taken from: -;; https://notmuchmail.org/pipermail/notmuch/2018/026414.html -(defcustom euandreh/notmuch-attach-regex - "\\b\\(attache\?ment\\|attached\\|attach\\|pi[èe]ce\s+jointe?\\)\\b" - "Pattern of text announcing there should be an attachment. - -This is used by `notmuch-message-check-attach' to check email -bodies for words that might indicate the email should have an -attachement. If the pattern matches and there is no attachment (a -`<#part ...>' magic block), notmuch will show a confirmation -prompt before sending the email. - -The default regular expression is deliberately liberal: we prefer -false positive than forgotten attachments. This should be -customized for non-english languages and notmuch welcomes -additions to the pattern for your native language, unless it -conflicts with common words in other languages." - :type '(regexp) - :group 'notmuch-send) - -(defun euandreh/notmuch-message-check-attach () - "Check for missing attachments. - -This is normally added to `message-send-hook' and is configured -through `notmuch-message-attach-regex'." - (save-excursion ;; XXX: this fails somehow: point is at the end of the buffer on error - (goto-char (point-min)) - (if (re-search-forward euandreh/notmuch-attach-regex nil t) - (progn - (goto-char (point-min)) - (unless (re-search-forward "<#part [^>]*filename=[^>]*>" nil t) - (or (y-or-n-p "Email seem to refer to attachment, but nothing attached, send anyways?") - (error "No attachment found, aborting"))))))) - -(defun euandreh/prevent-sending-mail-without-subject () - (save-excursion - (save-restriction - (message-narrow-to-headers) - (when (not (message-fetch-field "subject")) - (or (y-or-n-p "Email without subject. Really send?") - (error "No subject found, aborting")))))) - -(defun euandreh/add-bug-id () - (interactive) - (let ((id (uuidgen-4))) - (insert (format ":PROPERTIES:\n:CUSTOM_ID: %s\n:END:" id id id)))) - -(defun git-link-cgit (hostname dirname filename _branch commit start _end) - (let* ((project-name (car (last (split-string dirname "/")))) - (format-string (pcase hostname - ("git.euandreh.xyz" "https://%s/%s/tree/%s?id=%s#n%s") - ("git.savannah.gnu.org" "https://%s/cgit/%s.git/tree/%s?id=%s#n%s") - (t "https://%s/%s.git/tree/%s?id=%s#n%s")))) - (format format-string - hostname - project-name - filename - commit - start))) - -(defun euandreh/find-bookmarked-files () - (interactive) - (helm :sources - (helm-build-sync-source "mailint lists" - :candidates '("annex/TODOs.org" - "annex/txt/Work.org" - "annex/txt/Things.org" - "annex/txt/writing.org" - ;; "annex/txt/archive/Things.old.org" - "annex/bin/misc/git/mrconfig.ini" - "annex/bin/misc/erc.el" - "annex/bin/misc/weechat/irc.conf" - "annex/bin/misc/mail/notmuch-post.sh" - "annex/bin/misc/mail/notmuch.el" - "tmp/scratch.txt" - "archive/vid/playlist.txt" - "annex/txt/Meeting Notes.org" - "dev/libre/others/dinheiros/money.ledger") - :action '(("Find file" . (lambda (f) - (find-file (concat "~/" f)))))))) - -(defun dotspacemacs/user-config () - "Configuration function for user code. -This function is called at the very end of Spacemacs initialization after layers configuration. -This is the place where most of your configurations should be done. Unless it is explicitly specified that a variable should be set before a package is loaded, you should place your code here." - (require 'notmuch) - (define-key 'notmuch-show-part-map "d" 'euandreh/notmuch-show-view-as-patch) - (define-key 'notmuch-show-part-map "y" 'euandreh/notmuch-copy-git-am-command) - (define-key 'notmuch-show-part-map "b" 'euandreh/notmuch-copy-archive-url) - (define-key 'notmuch-show-part-map "r" 'euandreh/notmuch-copy-git-send-email-command) - (define-key 'notmuch-search-mode-map "e" 'euandreh/notmuch-extend-current-query-with-tag) - (define-key 'notmuch-search-mode-map "E" 'euandreh/notmuch-extend-current-query) - (add-hook 'message-send-hook 'euandreh/notmuch-message-check-attach) - (add-hook 'message-send-hook 'euandreh/prevent-sending-mail-without-subject) - - (add-hook 'markdown-mode-hook 'turn-on-auto-fill) - (add-hook 'rst-mode-hook 'turn-on-auto-fill) - (add-hook 'org-mode-hook 'turn-on-auto-fill) - - (eval-after-load 'clojure-mode '(set-custom-clj-indent)) - (eval-after-load 'midje-mode '(set-custom-clj-indent)) - (add-hook 'dante-mode-hook 'flycheck-mode) - - (spacemacs/set-leader-keys - "p C-r" 'euandreh/projectile-reload-known-projects - "an" 'notmuch - "ai" 'erc-track-switch-buffer - "w/" 'split-window-right-and-focus - "w-" 'split-window-below-and-focus - "glh" 'git-link-homepage - "feo" 'euandreh/find-os-declaration-file - "feb" 'euandreh/find-fake-symlinks-file) - - (spacemacs/set-leader-keys-for-major-mode 'typescript-mode - "." 'spacemacs/jump-to-definition - "," 'tide-jump-back) - - ;; (global-evil-mc-mode) - - ;; https://github.com/syl20bnr/spacemacs/issues/774 - (unless (file-exists-p (concat spacemacs-cache-directory "undo")) - (make-directory (concat spacemacs-cache-directory "undo"))) - - (add-hook 'org-mode-hook (lambda () - (org-indent-mode 1))) - - ;; https://emacs.stackexchange.com/questions/3747/how-to-disable-line-wrapping-in-spacemacs - (add-hook 'hack-local-variables-hook (lambda () - (spacemacs/toggle-truncate-lines-off))) - - (dolist (mode-pair '(("\\.tsx?$" . typescript-mode) - ("\\.json\\.base$" . json-mode))) - (setq auto-mode-alist (cons mode-pair auto-mode-alist))) - - (dolist (path custom-el-files) - (when (file-exists-p path) - (load path))) - - (dolist (mode paredit-modes :done) - (let ((mode-hook (intern (concat (symbol-name mode) "-hook"))) - (mode-map (intern (concat (symbol-name mode) "-map")))) - (add-hook mode-hook 'paredit-mode) - (add-hook mode-hook (lambda () - (rainbow-delimiters-mode 1))) - (spacemacs/set-leader-keys-for-major-mode mode - "k" 'paredit-copy-as-kill - "." 'spacemacs/jump-to-definition - "," 'cider-pop-back))) - - (spacemacs/set-leader-keys-for-major-mode 'clojure-mode - "l" 'clojure-align - "eF" 'euandreh/clear-repl-and-eval - "tt" 'euandreh/save-and-run-focused-test - "eb" 'euandreh/save-and-eval-buffer) - - ;; From the documentation: - ;; https://cider.readthedocs.io/en/latest/code_completion/ - (global-set-key (kbd "TAB") #'company-indent-or-complete-common) - (add-hook 'cider-repl-mode-hook #'cider-company-enable-fuzzy-completion) - (add-hook 'cider-mode-hook #'cider-company-enable-fuzzy-completion) - - (dolist (keybinding custom-keybindings) - (global-set-key (kbd (car keybinding)) (cdr keybinding))) - - (org-babel-do-load-languages - 'org-babel-load-languages - '((elixir . t) - (http . t) - (restclient . t) - (shell . t) - (clojure . t) - (ruby . t) - (python . t) - (perl . t) - (js . t) - (C . t) - (emacs-lisp . t) - (rust . t))) - - (setq standard-indent 2 - git-link-use-commit t - vc-follow-symlinks t - default-truncate-lines nil - ispell-program-name "aspell" - - ;; Indentation - typescript-indent-level 2 - js2-basic-offset 2 - js-indent-level 2 - 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 - perl6-indent-offset 2 - cperl-indent-level 2 - c-basic-offset 2 - sh-basic-offset 2 - sh-indentation 2 - smie-indent-basic 2 - perl-indent-level 2 - - ;; Clojure - cljr-warn-on-eval nil - cljr-eagerly-build-asts-on-startup nil - cljr-assume-language-context "clj" - cider-repl-display-help-banner nil - - ;; Common Lisp - inferior-lisp-program "sbcl" - common-lisp-hyperspec-root (concat "file:" (expand-file-name "~/annex/docs/programming/hyperspec/HyperSpec/")) - - ;; Persistent undo - undo-tree-auto-save-history t - undo-tree-history-directory-alist `(("." . ,(concat spacemacs-cache-directory "undo"))) - - ;; org-mode - ;; Taken from: - ;; - http://cachestocaches.com/2016/9/my-workflow-org-agenda - ;; - http://doc.norang.ca/org-mode.html - - - org-log-done 'time - org-log-into-drawer nil - org-log-state-notes-insert-after-drawers nil - - - org-todo-keywords '((sequence "TODO(t!)" "NEXT(n!)" "WAITING(w!)" "MEETING(m!)" "INACTIVE(i!)" "DOING(d!)" "|" "CANCELLED(c@)" "DONE(x@)")) - org-todo-keyword-faces '(("TODO" . (:foreground "brown" :weight bold)) - - ("DOING" . (:foreground "yellow" :weight bold)) - ("WAITING" . (:foreground "white" :weight bold)) - ("MEETING" . (:foreground "white" :weight bold)) - - ("INACTIVE" . (:foreground "orange" :weight bold)) - - ("NEXT" . (:foreground "red" :weight bold)) - - ("CANCELLED" . (:foreground "green" :weight bold)) - ("DONE" . (:foreground "green" :weight bold))) - org-agenda-files (list "~/annex/txt/Agenda.org") - org-columns-default-format "%50ITEM(Task) %10CLOCKSUM %16TIMESTAMP_IA" - - org-capture-templates '(("c" "Dump" entry (file "~/annex/txt/Dump.org") " ") - ("d" "Diary" entry (file+datetree "~/annex/txt/Diary.org") "* %?\n%U\n" :clock-in t :clock-resume t) - ("D" "Decision" entry (file+datetree "~/annex/txt/Decisions.org") "* %?\n%U\n" :clock-in t :clock-resume t) - ("t" "Terapia" entry (file+datetree "~/annex/txt/Terapia.org") "* %?\n%U\n" :clock-in t :clock-resume t) - ("S" "Dream" entry (file+datetree "~/annex/txt/Dreams.org") "* %?\n%U\n" :clock-in t :clock-resume t) - ("m" "Meeting notes" entry (file+datetree "~/annex/txt/Meeting Notes.org") "* MEETING with %?\n")) - - ;; Make splitting vertically more likely on smaller (velhinho) screens - split-width-threshold 120 - - ledger-reports '(("cleared-balance" "%(binary) -f %(ledger-file) balance Assets Liabilities --cleared")) - - browse-url-browser-function 'browse-url-default-browser ;; 'eww-browse-url - - auth-source-debug t - - magit-diff-refine-hunk t - magit-published-branches '() - - helm-ag-base-command "ag --nocolor --nogroup --hidden" - - epa-replace-original-text t) - - (set-language-environment "UTF-8") - (set-default-coding-systems 'utf-8) - - (setq org-export-allow-bind-keywords t) - (setq org-html-postamble t) - - - (with-eval-after-load 'geiser-guile - (add-to-list 'geiser-guile-load-path "~/dev/guix/guix")) - (with-eval-after-load 'yasnippet - (add-to-list 'yas-snippet-dirs "~/dev/guix/guix/etc/snippets")) - (setq geiser-active-implementations '(guile)) - (put 't:test-equal 'scheme-indent-function 1) - (put 't:test-assert 'scheme-indent-function 1) - (put 'srfi-9:define-record-type 'scheme-indent-function 1) - (put 'srfi-9-gnu:set-record-type-printer! 'scheme-indent-function 1) - (put 'with-claps 'scheme-indent-function 2) - (put 'when-let 'scheme-indent-function 1) - (put 'if-let 'scheme-indent-function 1) - (put 'if 'scheme-indent-function 1) - - (with-eval-after-load 'info-lookup-mode - (turn-off-evil-mode)) - - (with-eval-after-load 'git-link - (add-to-list 'git-link-remote-alist '("git.savannah.gnu.org" git-link-cgit)) - (add-to-list 'git-link-remote-alist '("git.euandreh.xyz" git-link-cgit))) - - t) - -(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. - '(package-selected-packages - '(po-mode lsp-dart dap-mode posframe flutter dart-server dart-mode tern ron-mode phpunit phpcbf php-extras php-auto-yasnippets geben drupal-mode counsel swiper ivy company-phpactor phpactor composer php-runtime company-php ac-php-core xcscope php-mode circe oauth2 erc-yt erc-view-log erc-social-graph erc-image erc-hl-nicks websocket emojify emoji-cheat-sheet-plus company-emoji direnv anaconda-mode nix-sandbox lsp-ui lsp-treemacs helm-lsp cquery company-lsp ccls lsp-python-ms python epc ctable concurrent deferred blacken pythonic helm-gtags godoctor go-tag go-rename go-impl go-guru go-gen-test go-fill-struct go-eldoc ggtags flycheck-gometalinter flycheck-golangci-lint counsel-gtags company-go go-mode company-terraform terraform-mode hcl-mode graphviz-dot-mode ace-jump-mode noflet treemacs-projectile treemacs-evil treemacs ht pfuture yasnippet-snippets yapfify yaml-mode xterm-color ws-butler writeroom-mode winum which-key web-mode web-beautify volatile-highlights vi-tilde-fringe uuidgen use-package unicode-fonts unfill toml-mode toc-org tide tagedit systemd symon swift-mode string-inflection sql-indent spaceline-all-the-icons smeargle slime-company slim-mode shell-pop selectric-mode seeing-is-believing scss-mode sass-mode rvm ruby-tools ruby-test-mode ruby-refactor ruby-hash-syntax rubocop rspec-mode robe rjsx-mode restclient-helm restart-emacs rbenv rake rainbow-delimiters racer pyvenv pytest pyenv-mode py-isort pug-mode psci psc-ide prettier-js powershell popwin pippel pipenv pip-requirements persp-mode pdf-tools password-generator paradox ox-reveal overseer orgit org-projectile org-present org-pomodoro org-mime org-download org-bullets org-brain open-junk-file ob-rust ob-restclient ob-http ob-elixir nov nix-mode neotree nameless mwim multi-term move-text mmm-mode minitest markdown-toc magit-svn magit-gitflow lorem-ipsum livid-mode live-py-mode link-hint json-navigator js2-refactor js-doc jinja2-mode interleave insert-shebang indent-guide importmagic impatient-mode hungry-delete hlint-refactor hl-todo hindent highlight-parentheses highlight-numbers highlight-indentation helm-xref helm-themes helm-swoop helm-rtags helm-pydoc helm-purpose helm-projectile helm-org-rifle helm-notmuch helm-nixos-options helm-mode-manager helm-make helm-hoogle helm-gitignore helm-git-grep helm-flx helm-descbinds helm-css-scss helm-company helm-c-yasnippet helm-ag haskell-snippets google-translate google-c-style golden-ratio gnuplot gitignore-templates gitconfig-mode gitattributes-mode git-timemachine git-messenger git-link git-gutter-fringe git-gutter-fringe+ gh-md geiser fuzzy font-lock+ flyspell-correct-helm flycheck-rust flycheck-rtags flycheck-pos-tip flycheck-perl6 flycheck-mix flycheck-ledger flycheck-haskell flycheck-elm flycheck-credo flycheck-bashate flx-ido fish-mode fireplace fill-column-indicator fancy-battery eyebrowse expand-region evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-surround evil-org evil-numbers evil-nerd-commenter evil-matchit evil-magit evil-lisp-state evil-lion evil-ledger evil-indent-plus evil-iedit-state evil-goggles evil-exchange evil-escape evil-ediff evil-cleverparens evil-args evil-anzu eshell-z eshell-prompt-extras esh-help erlang emmet-mode emidje elm-test-runner elm-mode elisp-slime-nav editorconfig dumb-jump dotenv-mode doom-modeline dockerfile-mode docker disaster diminish diff-hl define-word debbugs cython-mode csv-mode counsel-projectile company-web company-tern company-statistics company-shell company-rtags company-restclient company-plsense company-nixos-options company-lua company-ghci company-cabal company-c-headers company-auctex company-ansible company-anaconda common-lisp-snippets column-enforce-mode cmm-mode clojure-snippets clojure-cheatsheet clj-refactor clean-aindent-mode clang-format cider-eval-sexp-fu chruby centered-cursor-mode cargo bundler browse-at-remote auto-yasnippet auto-highlight-symbol auto-dictionary auto-compile auctex-latexmk ansible-doc ansible alchemist aggressive-indent adoc-mode ace-window ace-link ace-jump-helm-line ac-ispell)) - '(safe-local-variable-values - '((eval add-hook 'before-save-hook 'time-stamp) - (javascript-backend . tide) - (go-backend . go-mode) - (go-backend . lsp) - (eval let - ((root-dir-unexpanded - (locate-dominating-file default-directory ".dir-locals.el"))) - (when root-dir-unexpanded - (let* - ((root-dir - (expand-file-name root-dir-unexpanded)) - (root-dir* - (directory-file-name root-dir))) - (unless - (boundp 'geiser-guile-load-path) - (defvar geiser-guile-load-path 'nil)) - (make-local-variable 'geiser-guile-load-path) - (require 'cl-lib) - (cl-pushnew root-dir* geiser-guile-load-path :test #'string-equal)))) - (eval setq-local guix-directory - (locate-dominating-file default-directory ".dir-locals.el")) - (eval let* - ((root-dir - (expand-file-name - (locate-dominating-file default-directory ".dir-locals.el"))) - (root-dir* - (directory-file-name root-dir))) - (unless - (boundp 'geiser-guile-load-path) - (defvar geiser-guile-load-path 'nil)) - (make-local-variable 'geiser-guile-load-path) - (require 'cl-lib) - (cl-pushnew root-dir* geiser-guile-load-path :test #'string-equal)) - (eval setq guix-directory - (locate-dominating-file default-directory ".dir-locals.el")) - (eval c-set-offset 'inlambda 0) - (eval c-set-offset 'access-label '-) - (eval c-set-offset 'substatement-open 0) - (eval c-set-offset 'arglist-cont-nonempty '+) - (eval c-set-offset 'arglist-cont 0) - (eval c-set-offset 'arglist-intro '+) - (eval c-set-offset 'inline-open 0) - (eval c-set-offset 'defun-open 0) - (eval c-set-offset 'innamespace 0) - (indicate-empty-lines . t) - (c-block-comment-prefix . " ") - (eval progn - (pp-buffer) - (indent-buffer)) - (eval modify-syntax-entry 43 "'") - (eval modify-syntax-entry 36 "'") - (eval modify-syntax-entry 126 "'") - (typescript-backend . tide) - (typescript-backend . lsp) - (javascript-backend . tern) - (javascript-backend . lsp) - (elixir-enable-compilation-checking . t) - (elixir-enable-compilation-checking)))) -(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. - ) -) |
