aboutsummaryrefslogtreecommitdiff
path: root/spacemacs.el
diff options
context:
space:
mode:
Diffstat (limited to 'spacemacs.el')
-rw-r--r--spacemacs.el234
1 files changed, 54 insertions, 180 deletions
diff --git a/spacemacs.el b/spacemacs.el
index 8e41dc4..8d5c5ee 100644
--- a/spacemacs.el
+++ b/spacemacs.el
@@ -2,12 +2,6 @@
;; This file is loaded by Spacemacs at startup.
;; It must be stored in your home directory.
-;; FIXME
-;; macOS TLS error, fix from:
-;; https://blog.vifortech.com/posts/emacs-tls-fix/
-(require 'gnutls)
-(add-to-list 'gnutls-trustfiles "/usr/local/etc/openssl/cert.pem")
-
(defun dotspacemacs/layers ()
"Layer configuration:
This function should only modify configuration layer settings."
@@ -93,11 +87,9 @@ This function should only modify configuration layer settings."
;; 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.
- ;; 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
- interleave)
+ interleave
+ yasnippet-snippets)
;; A list of packages that cannot be updated.
dotspacemacs-frozen-packages '()
@@ -448,14 +440,34 @@ It should only modify the values of Spacemacs settings."
;; `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))
+ dotspacemacs-whitespace-cleanup 'trailing
-(defun dotspacemacs/user-init ()
- "Initialization function for user code.
-It is called immediately after `dotspacemacs/init', before layer configuration executes.
- This function is mostly useful for variables that need to be set before packages are loaded. If you are unsure, you should try in setting them in `dotspacemacs/user-config' first.")
+ ;; 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-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 while dumping Spacemacs configuration. You can
+`require' or `load' the libraries of your choice that will be included
+in the dump."
+ )
+
+
+;; TODO: merge upstream
(defun git-link-pull-requests (remote)
(interactive (list (git-link--select-remote)))
(let ((remote-host (git-link--remote-host remote)))
@@ -468,31 +480,10 @@ It is called immediately after `dotspacemacs/init', before layer configuration
("github.com" "pulls"))))
(error "Remote `%s' is unknown or contains an unsupported URL" remote))))
-(defun set-custom-nu-clj-indent ()
- "Reset midje indent to default."
- (define-clojure-indent
- (fact 1)
- (facts 1)
- (against-background 1)
- (provided 0)
- (let-entities 3)
- (flow 1)
- (as-customer 1)
- (for-all 1)
- (confirmation-button 1)
- (query 1)
- (render 1)
- (initial-state 1)
- (ident 1)
- (query 1)
- (for-all 1)
- (fdef 1)
- (action 1)
- (as-user 3)
- (constraint-fn 1))
-
- ;; dom/* indentation rules: React/Native helper fns
+(defun set-custom-clj-indent ()
+ "dom/* indentation rules: React/Native helper fns"
(define-clojure-indent
+ ;; React
(view 'defun)
(text 'defun)
(touchable-highlight 'defun)
@@ -506,83 +497,18 @@ It is called immediately after `dotspacemacs/init', before layer configuration
(a 'defun)
(span 'defun)
(svg 'defun)
- (options 'defun)))
-
-(defun midje-load-facts ()
- "Load current namespace (or their test namespace) facts"
- (interactive)
- (cider-ensure-connected)
- (when (buffer-file-name)
- (let* ((ns (cider-current-ns))
- (test-ns (if (or (projectile-test-file-p (buffer-file-name)) (string-prefix-p "postman." ns)) ns (format "%s-test" ns)))
- (cmd (format "(do (midje.repl/forget-facts *ns* '%s) (midje.repl/load-facts '%s))" test-ns test-ns)))
- (cider-interactive-eval cmd))))
-
-(defun helm-multi-swoop-projectile-all-files (&optional $query)
- "Apply all opened buffers of the current project to helm-multi-swoop"
- (interactive)
- (setq helm-multi-swoop-query (helm-multi-swoop--get-query $query))
- (if (require 'projectile nil 'noerror)
- ;; set filter function that is used in projectile-project-buffers
- (let ((projectile-buffers-filter-function #'identity))
- (helm-multi-swoop--exec nil
- :$query helm-multi-swoop-query
- :$buflist (mapcar #'buffer-name
- (projectile-project-buffers))))
- (error "Package 'projectile' is not available")))
-
-(defun save-and-eval-clojure-buffer (&optional buffer)
- (interactive)
- (save-buffer buffer)
- (cider-eval-buffer buffer))
-
-(defun euandreh/cider-test-run-focused-test (&optional buffer)
- (interactive)
- (save-buffer buffer)
- (spacemacs/cider-test-run-focused-test))
-
-(defun save-and-test-elixir-buffer (&optional buffer)
- (interactive)
- (save-buffer buffer)
- (alchemist-mix-test-this-buffer))
-
-(defun save-and-rerun-last-test (&optional buffer)
- (interactive)
- (save-buffer buffer)
- (alchemist-mix-rerun-last-test))
+ (options 'defun)
-(defun save-all-buffers-without-always-asking-me-for-confirmation-damn-it ()
- (interactive)
- (save-some-buffers t))
+ (action 1)))
(defun euandreh/clear-repl-and-eval ()
(interactive)
- (cider-find-and-clear-repl-output)
+ (cider-find-and-clear-repl-output t)
(cider-eval-defun-at-point))
-;; Taken from
-;; https://github.com/bhauman/lein-figwheel/wiki/Using-the-Figwheel-REPL-within-NRepl
-(defun cider-figwheel-repl ()
- (interactive)
- (save-some-buffers)
- (with-current-buffer (cider-current-repl-buffer)
- (goto-char (point-max))
- (insert "(require 'figwheel-sidecar.repl-api)
- (figwheel-sidecar.repl-api/start-figwheel!) ; idempotent
- (figwheel-sidecar.repl-api/cljs-repl)")
- (cider-repl-return)))
-
-(defvar mode-pairs '(("\\.sbclrc$" . lisp-mode)
- ("\\.tsx$" . typescript-mode)
- ("\\.json\\.base$" . json-mode)
- ("\\.lytex$" . latex-mode)
- ("\\.ly$" . latex-mode)
- ("rc$" . shell-script-mode)))
-
(defvar paredit-modes '(lisp-mode
lisp-interaction-mode
emacs-lisp-mode
- ;; scheme-mode
ielm-mode
clojure-mode
cider-mode
@@ -592,72 +518,29 @@ It is called immediately after `dotspacemacs/init', before layer configuration
clojurex-mode
cider-clojure-interaction-mode))
-(defvar custom-el-files '("~/dev/nu/nudev/ides/emacs/nu.el"
- "~/annex/dev/code/dotfiles/emacs/re-jump.el"))
-
-(defvar custom-keybindings '(("C-x M-b" . ibuffer)
- ("M-SPC" . (lambda () (interactive) (just-one-space -1)))
- ("M-ç" . (lambda () (interactive) (find-file "~/Nextcloud/txt/TODOs.org")))
- ("M-[" . (lambda () (interactive) (find-file "~/tmp/scratch.org")))
- ("M-p" . interleave-mode)
- ("C-i" . evil-jump-forward)
-
- ;; tabbar-mode
- ("C-<tab>" . tabbar-forward)
- ("C-<iso-lefttab>" . tabbar-backward)
-
- ;; Ctrl-Super-*
- ("C-H-e" . (lambda () (interactive) (insert "∋")))
- ("C-H-S-e" . (lambda () (interactive) (insert "∌")))
- ("C-H-3" . (lambda () (interactive) (insert "♯")))
- ("C-H-b" . (lambda () (interactive) (insert "♭")))
-
- ;; Ctrl-Super-Alt-*
- ("C-H-M-a" . (lambda () (interactive) (insert "α")))
- ("C-H-M-b" . (lambda () (interactive) (insert "β")))
- ("C-H-M-c" . (lambda () (interactive) (insert "γ")))
- ("C-H-M-d" . (lambda () (interactive) (insert "δ")))
- ("C-H-M-f" . (lambda () (interactive) (insert "ε")))))
-
+(defvar custom-keybindings '(("M-ç" . (lambda () (interactive) (find-file "~/Nextcloud/txt/TODOs.org")))
+ ("M-SPC" . (lambda () (interactive) (just-one-space -1)))
+ ("M-[" . (lambda () (interactive) (find-file "~/tmp/scratch.org")))))
(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 'git-link) ;; for git-link-*
- (require 'clojure-mode) ;; for set-nu-clj-indent
- (require 'org-indent) ;; for org-indent-mode
- (require 'helm-swoop) ;; for custom helm-multi-swoop-projectile-all-files
+
+ (eval-after-load 'clojure-mode '(set-custom-clj-indent))
+ (eval-after-load 'midje-mode '(set-custom-clj-indent))
(projectile-cleanup-known-projects)
(spacemacs/set-leader-keys
- "fS" 'save-all-buffers-without-always-asking-me-for-confirmation-damn-it ;; 'save-some-buffers
- "w/" 'split-window-right-and-focus
- "w-" 'split-window-below-and-focus
- "d" 'spacemacs/delete-window
- "sS" 'helm-multi-swoop-projectile-all-files
"glh" 'git-link-homepage
- "glp" 'git-link-pull-requests
- "W" 'spacemacs/workspaces-transient-state/body)
-
- (spacemacs/set-leader-keys-for-major-mode 'elixir-mode
- "tb" 'save-and-test-elixir-buffer
- "tr" 'save-and-rerun-last-test)
+ "glp" 'git-link-pull-requests)
(spacemacs/set-leader-keys-for-major-mode 'typescript-mode
"." 'spacemacs/jump-to-definition
"," 'tide-jump-back)
- ;; https://github.com/nubank/nudev/pull/509
- (when (require 'exec-path-from-shell nil 'noerror)
- ;; https://emacs.stackexchange.com/questions/17866/magit-how-to-use-systems-ssh-agent-and-dont-ask-for-password
- (exec-path-from-shell-initialize)
- (exec-path-from-shell-copy-env "SSH_AGENT_PID")
- (exec-path-from-shell-copy-env "SSH_AUTH_SOCK")
- ;; github layer
- (exec-path-from-shell-copy-env "EMACS_GITHUB_TOKEN"))
-
;; https://github.com/syl20bnr/spacemacs/issues/774
(unless (file-exists-p (concat spacemacs-cache-directory "undo"))
(make-directory (concat spacemacs-cache-directory "undo")))
@@ -669,31 +552,27 @@ This is the place where most of your configurations should be done. Unless it is
(add-hook 'hack-local-variables-hook (lambda ()
(spacemacs/toggle-truncate-lines-off)))
- (dolist (mode-pair mode-pairs)
+ (dolist (mode-pair '(("\\.json\\.base$" . json-mode)))
(setq auto-mode-alist (cons mode-pair auto-mode-alist)))
- (dolist (path custom-el-files)
+ (dolist (path '("~/annex/dev/code/dotfiles/emacs/re-jump.el"
+ "~/quicklisp/slime-helper.el"))
(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"))))
- (eval-after-load mode '(set-custom-nu-clj-indent))
- (eval-after-load mode '(sayid-setup-package))
(add-hook mode-hook 'paredit-mode)
(add-hook mode-hook (lambda ()
(rainbow-delimiters-mode 1)))
(spacemacs/set-leader-keys-for-major-mode mode
- "E" 'euandreh/clear-repl-and-eval
- "k" 'paredit-copy-as-kill
- "K" 'paredit-copy-sexps-as-kill
- "tm" 'midje-load-facts
- "eb" 'save-and-eval-clojure-buffer
- "tt" 'euandreh/cider-test-run-focused-test
- "." 'spacemacs/jump-to-definition
- "," 'cider-pop-back)))
+ "k" 'paredit-copy-as-kill
+ "." 'spacemacs/jump-to-definition
+ "," 'cider-pop-back)))
+
+ (spacemacs/set-leader-keys-for-major-mode 'clojure-mode
+ "eF" 'euandreh/clear-repl-and-eval)
;; From the documentation:
;; https://cider.readthedocs.io/en/latest/code_completion/
@@ -707,9 +586,10 @@ This is the place where most of your configurations should be done. Unless it is
(setq standard-indent 2
git-link-use-commit t
vc-follow-symlinks t
- org-todo-keywords '((sequence "TODO" "NEXT" "WAITING" "INACTIVE" "CANCELLED" "MEETING" "DOING" "|" "DONE"))
default-truncate-lines nil
magit-diff-refine-hunk t
+ ispell-program-name "aspell"
+ TeX-view-program-selection '((output-pdf "Zathura"))
;; Indentation
typescript-indent-level 2
@@ -724,27 +604,21 @@ This is the place where most of your configurations should be done. Unless it is
;; Clojure
cljr-warn-on-eval nil
- ;; cider-cljs-lein-repl "(do (require 'figwheel-sidecar.repl-api)
- ;; (figwheel-sidecar.repl-api/start-figwheel!)
- ;; (figwheel-sidecar.repl-api/cljs-repl))"
+ cider-repl-display-help-banner nil
;; Common Lisp
- inferior-lisp-program "ros -L sbcl -Q -l ~/.sbclrc run"
+ 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")))
- ;; EMMS
- emms-source-file-default-directory "~/annex/Banshee/queue/"
- emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find
- emms-browser-get-track-field-function #'emms-browser-get-track-field-use-directory-name
-
;; org-mode
;; Taken from:
;; - http://cachestocaches.com/2016/9/my-workflow-org-agenda
;; - http://doc.norang.ca/org-mode.html
+ org-todo-keywords '((sequence "TODO" "NEXT" "WAITING" "INACTIVE" "CANCELLED" "MEETING" "DOING" "|" "DONE"))
org-agenda-files '("~/Nextcloud/txt/TODOs.org")
org-columns-default-format "%50ITEM(Task) %10CLOCKSUM %16TIMESTAMP_IA"
org-default-notes-file "~/Nextcloud/txt/TODOs.org"