4ae7c492 |
;; -*- mode: Emacs-Lisp;tab-width: 8;indent-tabs-mode: nil; -*-
|
6b10f3e8 |
(setq read-process-output-max (* 1024 1024))
|
d777d465 |
(setq gc-cons-threshold 100000000
load-prefer-newer t
inhibit-splash-screen t
inhibit-startup-message t
native-comp-debug 3)
|
f0432f05 |
|
4ae7c492 |
(message invocation-name)
|
8d30d2e4 |
(require 'package)
(setq package-archives
'(("gnu" . "http://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")
("melpa-stable" . "http://stable.melpa.org/packages/")
("nongnu" . "https://elpa.nongnu.org/nongnu/"))
package-archive-priorities '(("melpa-stable" . 1)
("gnu" . 0)
("melpa" . 3)
("nongnu" . 2)))
;; (package-initialize 'no-activate)
(when (not (package-installed-p 'use-package))
(package-refresh-contents)
(package-install 'use-package))
|
c09e128e |
(let ((default-directory "~/.emacs.d/lisp/"))
(make-directory default-directory t)
|
4db36da5 |
(add-to-list 'load-path (expand-file-name default-directory))
|
4ae7c492 |
(normal-top-level-add-subdirs-to-load-path)
(load "utils"))
|
7649077c |
(progn
(define-key key-translation-map (kbd "M-7") (kbd "∘"))
(define-key key-translation-map (kbd "M-8") (kbd "•"))
(define-key key-translation-map (kbd "M-9") (kbd "λ")))
|
fa4ac53c |
(use-package s
:ensure t)
|
9bb117c4 |
(cold-boot)
|
4b6a354c |
|
b253b25b |
(use-package nix-mode
:ensure t)
|
7c9eeabd |
|
9f436b1a |
(use-package embark
:ensure t
|
7f555a76 |
:bind (:map global-map (("s-." . embark-act))))
|
9f436b1a |
|
a23499ac |
(use-package htmlize
:ensure t)
|
33f3bc08 |
(use-package keyfreq
:ensure t
:diminish
:config
(keyfreq-mode 1)
(keyfreq-autosave-mode 1))
(use-package auto-package-update
:ensure t)
|
6b10f3e8 |
(use-package general
:ensure t)
|
e6a3fb1e |
(use-package flycheck
:ensure t)
|
00af5f6f |
(use-package company
|
b2c22b37 |
:ensure t
:delight
|
74774e23 |
:bind (:map company-active-map
(("C-c h" . company-quickhelp-manual-begin)
("M-." . company-show-location)
("\C-d" . company-show-doc-buffer)))
|
00af5f6f |
:config
|
74774e23 |
(progn (define-key company-active-map (kbd "(") (kbd "RET SPC ("))
|
00af5f6f |
(define-key company-active-map (kbd "{") (kbd "RET SPC {"))
(define-key company-active-map (kbd "[") (kbd "RET [")))
|
4c6e757b |
(setq company-backends '((company-clang
company-bbdb
company-nxml
company-css
;;company-xcode
company-cmake
company-capf
;;company-slime
)
company-files
(company-dabbrev-code
company-gtags
company-etags
company-keywords)
company-oddmuse
|
d4a460b3 |
company-dabbrev)))
|
00af5f6f |
(use-package company-posframe
:ensure t
|
b2c22b37 |
:delight
|
00af5f6f |
:after company
:config
|
b2302716 |
(add-hook 'company-mode-hook (lambda () (company-posframe-mode 1)))
(setq company-posframe-quickhelp-delay nil))
|
00af5f6f |
|
4b6a354c |
(use-package jeison
:ensure t)
|
1d6e87c6 |
(use-package scala-mode
:ensure t)
|
fb2ab354 |
|
7ef55e57 |
|
46d0f7f2 |
(eval-and-compile
(defvar *fwoar-git-repos*
(file-name-as-directory
(expand-file-name (car (file-expand-wildcards "~/git*_repos"))
"~"))))
|
feb84907 |
|
46d0f7f2 |
(eval-and-compile
(defun fwoar-git-repo (name ssh-remote http-remote)
(let ((dir-name (file-name-as-directory (expand-file-name name *fwoar-git-repos*))))
(unless (file-exists-p dir-name)
(ecase fwoar-git-mode
(:ssh (magit-run-git-with-input "clone" ssh-remote dir-name))
(:http (magit-run-git-with-input "clone" http-remote dir-name))))
dir-name)))
(defvar *dotfiles-repo*
(fwoar-git-repo "dotfiles"
"git@git.fiddlerwoaroof.com:dotfiles.git"
"https://git.fiddlerwoaroof.com/git/dotfiles.git"))
(defun fwoar/setup-load-path ()
(let* ((new-load-path (cl-adjoin "~/.emacs.d/lisp/configurations/"
load-path
:test 'equal))
(new-load-path (cl-adjoin (concat *dotfiles-repo*
"emacs.d/lisp/configurations/")
new-load-path
:test 'equal))
(new-load-path (cl-adjoin (concat *dotfiles-repo*
"emacs.d/packages/")
new-load-path
:test 'equal)))
(setq load-path new-load-path)))
(fwoar/setup-load-path)
|
e557458c |
(use-package fwoar-pastebin :ensure nil
:custom
(fwoar-pastebin-tramp-url (when (file-exists-p "~/.pastebin-name")
|
8e1d34c2 |
(car (fwoar:read-sexps-in-file "~/.pastebin-name"))))
|
e557458c |
(fwoar-pastebin-web-url-pattern (when (file-exists-p "~/.pastebin-name")
|
8e1d34c2 |
(cadr (fwoar:read-sexps-in-file "~/.pastebin-name")))))
|
e557458c |
|
8639eb74 |
(use-package fwoar-yank-buffer
:init (require 'fwoar-yank-buffer)
:ensure nil)
|
d3d3923f |
(use-package fwoar-json-navigator
|
8d30d2e4 |
:after json-mode
|
d3d3923f |
:init (require 'fwoar-json-navigator)
:ensure nil)
|
46d0f7f2 |
(defun fwoar/package-configuration (package)
(fwoar/setup-load-path)
(let* ((local-configs)
(git-configs (concat *dotfiles-repo*
"emacs.d/lisp/configurations/"))
(conf-file (concat (symbol-name package) "-conf.el"))
(load-path (list* local-configs git-configs load-path)))
conf-file))
(defun load-package-configuration (package)
(let ((conf-file (fwoar/package-configuration package)))
(load conf-file)))
|
9517fbda |
(defmacro define-obsolete-function-alias ( obsolete-name current-name &optional when docstring)
(declare (doc-string 4) (indent defun))
`(progn
(defalias ,obsolete-name ,current-name ,docstring)
(make-obsolete ,obsolete-name ,current-name ,(or when "unspecified"))))
|
46d0f7f2 |
(defun fwoar/load-local-packages ()
(interactive)
(mapc 'package-install-file
(directory-files (format "%s/%s" *dotfiles-repo* "emacs.d/packages/")
|
6354c192 |
t ".*[.]el$")))
|
46d0f7f2 |
|
f6060a70 |
(use-package json-mode
:ensure t)
|
46d0f7f2 |
(unless (package-installed-p 'fwoar-functional-utils)
(fwoar/load-local-packages))
|
e1234864 |
|
7dde1b39 |
(defvar fwoar-git-mode :ssh)
|
4b6a354c |
(when (locate-library "site-lisp")
(load "site-lisp"))
|
0f7c083e |
|
7ef55e57 |
(load-package-configuration 'lsp)
|
0f7c083e |
(fwoar/zenburn-with-color-variables
(defface magit-keyword-feature
`((t :foreground ,zenburn-green :inherit magit-keyword))
"Face for parts of commit messages inside brackets."
:group 'magit-faces)
(defface magit-keyword-chore
`((t :foreground ,zenburn-blue :inherit magit-keyword))
"Face for parts of commit messages inside brackets."
:group 'magit-faces)
|
53bb7a3c |
(defface magit-keyword-test
`((t :foreground ,zenburn-blue-1 :inherit magit-keyword))
"Face for parts of commit messages inside brackets."
:group 'magit-faces)
(defface magit-keyword-refactor
`((t :foreground ,zenburn-green+1 :inherit magit-keyword))
"Face for parts of commit messages inside brackets."
:group 'magit-faces)
|
0f7c083e |
(defface magit-keyword-misc
`((t :foreground ,zenburn-fg-1 :inherit magit-keyword))
"Face for parts of commit messages inside brackets."
:group 'magit-faces)
(defface magit-keyword-bug
`((t :foreground ,zenburn-red :inherit magit-keyword))
"Face for parts of commit messages inside brackets."
:group 'magit-faces))
|
53bb7a3c |
(defvar fwoar::*magit-log-regexp-faces*
'((magit-keyword-feature
"^\\(\\(?:feat\\(?:ure\\)?(\\([^)]+?\\))\\)\\|\\(?:feat\\(ure\\)?\\>\\)\\)")
(magit-keyword-chore "^\\(\\(?:chore(\\([^)]+?\\))\\)\\|\\(?:chore\\>\\)\\)")
(magit-keyword-test "^\\(\\(?:test(\\([^)]+?\\))\\)\\|\\(?:test\\>\\)\\)")
(magit-keyword-refactor "^\\(\\(?:refactor(\\([^)]+?\\))\\)\\|\\(?:refactor\\>\\)\\)")
(magit-keyword-bug "^\\(\\(?:bug(\\([^)]+?\\))\\)\\|\\(?:bug\\>\\)\\)")
(magit-keyword-test "^\\(\\(?:test(\\([^)]+?\\))\\)\\|\\(?:test\\>\\)\\)")
))
|
0f7c083e |
(defun fwoar/propertize-magit-log (_rev msg)
|
53bb7a3c |
(cl-loop for (face regexp) in fwoar::*magit-log-regexp-faces*
do (let ((boundary 0))
(while (string-match regexp msg boundary)
(setq boundary (match-end 0))
(magit--put-face (match-beginning 0) boundary face msg))))
|
0f7c083e |
(let ((boundary 0))
(while (string-match "^\\([^:\n\t]+\\):" msg boundary)
(setq boundary (match-end 0))
(let ((group (match-string 1 msg)))
(unless (or (> (length group) 20)
(s-starts-with? "feat" group)
(s-starts-with? "Merge" group)
(s-starts-with? "merge" group)
(s-starts-with? "chore" group)
(s-starts-with? "bug" group))
(magit--put-face (match-beginning 0) (1- boundary)
'magit-keyword-misc msg))))))
(use-package magit
:ensure t
:config
;; TODO: figure this out with transients
;;(magit-define-popup-action 'magit-dispatch-popup ?j "Browse remote" 'browse-at-remote)
'magit-dispatch
(advice-add 'magit-log-propertize-keywords :after
'fwoar/propertize-magit-log))
(use-package browse-at-remote
:ensure t
|
fa986682 |
:custom
(browse-at-remote-prefer-symbolic nil)
|
0f7c083e |
|
fa986682 |
:config
|
8cb41deb |
(cl-pushnew '(:host "git.fiddlerwoaroof.com$" :type "gitlist")
|
fa986682 |
browse-at-remote-remote-type-regexps
:test 'equal)
(defun browse-at-remote--format-region-url-as-gitlist
(repo-url ref relname start-line end-line)
(unless (s-ends-with-p ".git" repo-url)
(setf repo-url (format "%s.git" repo-url)))
;; gitlist doesn't support end-line
(format "%s/blob/%s/%s#L%s" repo-url ref relname start-line))
)
|
b52a37b6 |
(use-package aggressive-indent :ensure t)
|
37e85dec |
(load-package-configuration 'evil)
|
6b10f3e8 |
(load-package-configuration 'helm)
|
e1234864 |
;; (load-package-configuration 'projectile)
|
337d53e1 |
|
be3afe26 |
;; slime depends on fwoar-git-repo
(load-package-configuration 'slime)
|
9f436b1a |
(load-package-configuration 'cider)
|
0f7c083e |
|
7b47fba5 |
(global-company-mode 1)
|
a39a3475 |
|
78c923bf |
|
09dbeb8c |
(defun fwoar/c-a-p ()
(interactive)
(save-excursion
(cl-destructuring-bind (start . _end) (bounds-of-thing-at-point 'defun)
(goto-char start)
(sp-wrap-with-pair "(")
(insert "comment\n")
(sp-indent-defun ))))
|
33f3bc08 |
(comment
(use-package multifiles
:config
(evil-define-key 'visual 'global (kbd "<leader>m") 'mf/mirror-region-in-multifile)))
|
c09e128e |
|
b52a37b6 |
(use-package http
:ensure t)
(use-package graphql
:ensure t)
|
fb63c0aa |
(load-package-configuration 'org)
|
6d1928cb |
|
88e3bf49 |
(use-package delight
:ensure t)
|
7665abb0 |
(use-package deadgrep
:ensure t)
|
6d1928cb |
(use-package deft
:ensure t
|
ad02aa87 |
:after evil
|
6d1928cb |
:config
|
8129b22b |
)
|
6d1928cb |
|
4ae7c492 |
(use-package emmet-mode
:ensure t
:config
|
9bb117c4 |
(define-key evil-insert-state-map (kbd "C-c ,") 'emmet-expand-line))
|
4ae7c492 |
|
385192ac |
(use-package lisp-skeletons
:config
(add-hook 'skeleton-end-hook 'skeleton-make-markers)
(define-key evil-insert-state-map (kbd "C-c j") 'skeleton-next-position)
(define-key evil-insert-state-map (kbd "C-c k") 'skeleton-prev-position)
|
8e1d34c2 |
(evil-define-key 'normal 'global (kbd "<leader>g") 'fwoar:helm-generate-lisp-skeleton)
(evil-define-key 'visual 'global (kbd "<leader>g") 'fwoar:helm-generate-lisp-skeleton))
|
385192ac |
|
78c923bf |
|
33f3bc08 |
(use-package htmlize
:ensure t)
|
4db36da5 |
|
086e6b59 |
(load-package-configuration 'javascript)
|
fc317ad1 |
|
827a0b73 |
(use-package direnv
:ensure t
:config
|
66289fe0 |
(direnv-mode 1)
|
827a0b73 |
(add-hook 'js2-mode-hook 'direnv-mode)
(add-hook 'typescript-mode-hook 'direnv-mode))
|
6486b4b0 |
|
78c923bf |
|
9c596577 |
(use-package cl-generic
:ensure t)
|
9dc16eeb |
(defun intercept-print (f)
(print f)
f)
|
7da1ef37 |
(cl-defgeneric fwoar--find-system ())
(defun fwoar-find-system ()
(interactive)
(fwoar--find-system))
(evil-define-key 'normal 'global (kbd "<leader>O") 'fwoar-find-system)
|
9c596577 |
(cl-defgeneric fwoar--pl-selector ()
|
448a1ede |
(:method () (slime-selector)))
|
0a885cea |
|
9c596577 |
(defun fwoar-pl-selector ()
(interactive)
(fwoar--pl-selector))
|
6b10f3e8 |
(evil-define-key 'normal 'global (kbd "<leader>o") 'fwoar-pl-selector)
|
9c596577 |
|
78c923bf |
|
8f4a76c3 |
(use-package imenu
:config
|
6b10f3e8 |
(evil-define-key 'normal 'global (kbd "<leader>d") 'helm-imenu-in-all-buffers))
|
8f4a76c3 |
|
42ddcaf3 |
(defun fwoar--read-register-name ()
(let ((overlay (make-overlay (point) (point)))
(string "\""))
(unwind-protect
(progn
;; display " in the buffer while reading register
(put-text-property 0 1 'face 'minibuffer-prompt string)
(put-text-property 0 1 'cursor t string)
(overlay-put overlay 'after-string string)
(list (or evil-this-register (read-char))))
(delete-overlay overlay))))
|
d491e468 |
(use-package cl-format :ensure t)
|
33f3bc08 |
(use-package eldoc :delight)
|
d491e468 |
(use-package css-eldoc :ensure t)
(use-package csv-mode :ensure t)
(use-package eldoc-eval :ensure t)
|
b2c22b37 |
(use-package highlight-parentheses
:ensure t
:delight
:config
|
6486b4b0 |
(global-highlight-parentheses-mode 1))
|
4db36da5 |
|
904d95db |
(defun fwoar/markdown-mode-hook ()
(setf left-margin-width 10
right-margin-width 10))
(use-package markdown-mode
:ensure t
:config
(add-hook 'markdown-mode-hook 'variable-pitch-mode)
(add-hook 'markdown-mode-hook 'fwoar/markdown-mode-hook))
|
d491e468 |
(use-package rainbow-delimiters :ensure t)
(use-package ripgrep :ensure t)
(use-package smartparens :ensure t :ensure t :config
|
3e7dea74 |
(sp-pair "${" "}")
|
6486b4b0 |
(sp-with-modes sp--lisp-modes
(sp-local-pair "'" nil :actions nil)
(sp-local-pair "`" nil :actions nil))
|
d491e468 |
(add-hook 'smartparens-enabled-hook 'evil-smartparens-mode))
(use-package web-mode :ensure t)
|
6486b4b0 |
|
d491e468 |
(use-package yaml-mode :ensure t)
|
6d1928cb |
|
33f3bc08 |
(use-package yasnippet
:ensure t
:hook (prog-mode . yas-minor-mode)
:config (yas-reload-all)
)
|
78c923bf |
|
c09e128e |
(use-package editorconfig
:ensure t
|
b2c22b37 |
:delight (editorconfig-mode " ec")
|
d491e468 |
:config (editorconfig-mode 1))
|
4a94c38c |
(defun fwoar--activate-treemacs ()
(interactive)
(if (treemacs-is-treemacs-window-selected?)
(delete-window)
(treemacs-select-window)))
|
c09e128e |
|
00af5f6f |
(defun fwoar--no-line-numbers ()
|
4b6a354c |
(display-line-numbers-mode -1))
|
538c576b |
|
0a885cea |
(use-package treemacs
:ensure t
:config
|
05368492 |
(setq treemacs-is-never-other-window t
treemacs-no-png-images t)
|
4b6a354c |
(global-set-key (kbd "s-e") 'fwoar--activate-treemacs)
(global-set-key (kbd "s-1") 'fwoar--activate-treemacs)
|
00af5f6f |
(add-hook 'treemacs-mode-hook 'fwoar--no-line-numbers)
|
4b6a354c |
)
|
0a885cea |
(use-package treemacs-evil
:after treemacs evil
:ensure t)
(use-package treemacs-icons-dired
:after treemacs dired
:ensure t
:config (treemacs-icons-dired-mode))
(use-package treemacs-magit
:after treemacs magit
:ensure t)
|
cd516d74 |
|
7665abb0 |
(progn ;; emacs-lisp stuff
(modify-syntax-entry ?- "w" emacs-lisp-mode-syntax-table)
(modify-syntax-entry ?_ "w" emacs-lisp-mode-syntax-table)
|
c09e128e |
|
7665abb0 |
(put 'narrow-to-page 'disabled nil)
)
|
568340bd |
|
4ae7c492 |
;;)
|
c09e128e |
|
78c923bf |
|
568340bd |
(global-set-key (kbd "s-v") 'yank)
|
5862f6da |
(setq custom-file "~/.emacs.d/custom.el")
|
b7bc1006 |
(when (file-exists-p custom-file)
(load-file custom-file))
|
4db36da5 |
|
6b10f3e8 |
;;(setq gc-cons-threshold (* 100 1024))
|
9efe4b5a |
|
568340bd |
(put 'narrow-to-region
'disabled
nil)
(global-set-key (kbd "C-x C-b")
'ibuffer)
|
cd516d74 |
|
b7bc1006 |
(defvar url-pattern (when (file-exists-p "~/.pastebin-name")
|
8e1d34c2 |
(car (fwoar:read-sexps-in-file "~/.pastebin-name"))))
|
eb65d556 |
(defun delete-mru-window ()
(interactive)
(delete-window
(get-mru-window nil nil t)))
|
9e977a3a |
(add-to-list 'browse-url-filename-alist
'("/Users/\\([^/]+\\)/\\(Sites\\|public_html\\)\\(/.*\\)" . "https://localhost/~\\1\\3"))
|
78c923bf |
(progn ;; narrowing
(define-key global-map "\C-c]" "\C-u1\C-xnp")
|
9977c7bf |
(define-key global-map "\C-c[" "\C-u-1\C-xnp\M-<"))
|
78c923bf |
|
49824555 |
(defun fwoar/zenburn-css ()
(interactive)
(mapcar (lambda (desc)
|
538c576b |
(cl-destructuring-bind (name . value) desc
|
49824555 |
(cl-format (current-buffer)
"--~a: ~a;~%"
(s-replace "+" "-plus-" name)
value)))
|
74337e9b |
fwoar-zenburn-default-colors-alist))
|
49824555 |
|
7665abb0 |
(defun fwoar/camel-kebab (string)
|
49824555 |
(let ((case-fold-search nil))
(downcase
(format "%c%s"
(elt string 0)
(or (when (> (length string) 1)
(s-replace-regexp "[A-Z]"
"-\\&"
string nil nil nil 1))
string)))))
(defun fwoar/cc-camel-kebab (start end)
(interactive "*r")
(let ((target (buffer-substring start end)))
(save-excursion
(delete-region start end)
|
7665abb0 |
(insert (fwoar/camel-kebab target)))))
|
49824555 |
|
3ea8aaa3 |
(defun fwoar--find-package-json ()
(expand-file-name
(locate-dominating-file default-directory
(lambda (n)
(directory-files n nil "^package.json$")))))
(defun find-package-json (default-directory)
(interactive "D")
(message "pakcage json: %s"(fwoar--find-package-json))
(find-file (concat (fwoar--find-package-json)
"/package.json")))
(cl-defmethod fwoar--find-system (&context (major-mode (derived-mode js-mode)))
(find-package-json default-directory))
|
5b706a2b |
(comment
(use-package org-brain :ensure t
:init
(setq org-brain-path "~/org-brain/")
|
37e85dec |
|
5b706a2b |
:config
(eval-after-load 'evil
'(evil-set-initial-state 'org-brain-visualize-mode 'emacs))
|
b00b8b8c |
|
5b706a2b |
(push '("B" "Brain" plain (function org-brain-goto-end)
"* %i%?" :empty-lines 1)
org-capture-templates)
|
b00b8b8c |
|
5b706a2b |
(setq org-id-track-globally t
org-id-locations-file "~/.emacs.d/.org-id-locations"
org-brain-visualize-default-choices 'all
org-brain-title-max-length 0)))
|
4e69f5ad |
|
4c6e757b |
(setq diary-file (expand-file-name "~/diary"))
|
1d6e87c6 |
(cl-defmacro fwoar/binding (setter target &body bindings)
(declare (indent 2))
(let ((target-sym (gensym)))
`(let ((,target-sym ,target))
,(cons 'progn
(mapcar (lambda (binding)
`(,setter ,target-sym ',(car binding) ,@(cdr binding)))
bindings)))))
(defun make-info-window ()
(setq mode-line-format nil)
|
45308d2c |
;;(centaur-tabs-local-mode 1)
|
1d6e87c6 |
(set-window-dedicated-p (selected-window) t)
(when-let (w (window-in-direction 'above))
(set-window-parameter w 'no-delete-other-windows t))
(fwoar/binding set-window-parameter (selected-window)
(no-other-window t)
(no-delete-other-windows t))
())
|
e5c62efb |
|
c4f32133 |
(comment
(use-package prolog)
(use-package ediprolog
:after prolog
:ensure t
:config
(define-key prolog-mode-map (kbd "C-j") 'ediprolog-dwim)))
|
7138b578 |
|
1d052cdb |
(progn
(require 'ansi-color)
(defun colorize-compilation-buffer ()
(toggle-read-only)
(ansi-color-apply-on-region compilation-filter-start (point))
(toggle-read-only))
(add-hook 'compilation-filter-hook 'colorize-compilation-buffer))
|
6b10f3e8 |
(put 'list-timers 'disabled nil)
|
70fd36cd |
|
55eb3053 |
(defun fwoar/center-defun ()
(interactive)
(cl-destructuring-bind (a . b) (bounds-of-thing-at-point 'defun)
(save-excursion
(let ((s (progn (goto-char a) (line-number-at-pos)))
(e (progn (goto-char b) (line-number-at-pos))))
(evil-scroll-line-to-center (+ s -1 (ceiling (- e s) 2)))))))
|
979ca560 |
(use-package which-key-posframe
|
66289fe0 |
:ensure t
:config
|
979ca560 |
(which-key-mode 1)
(which-key-posframe-mode 1))
|
66289fe0 |
|
4c84787e |
(use-package nix-mode
:ensure t)
|
dd399035 |
(define-derived-mode zsh-mode sh-mode "ZSH" "Mode for zsh scripts"
(setq-local sh-shell "zsh"))
|