├── setfont.el
├── snippets
└── org-mode
│ ├── img
│ ├── hl
│ └── post
├── init.el
└── README.org
/setfont.el:
--------------------------------------------------------------------------------
1 | ;;(set-frame-font "Inconsolata-18")
2 | (set-frame-font "Firacode-18")
3 |
--------------------------------------------------------------------------------
/snippets/org-mode/img:
--------------------------------------------------------------------------------
1 | # -*- mode: snippet -*-
2 | # name: img
3 | # key: img
4 | # expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil))
5 | # --
6 | #+begin_export html
7 |
8 | #+end_export
9 |
--------------------------------------------------------------------------------
/snippets/org-mode/hl:
--------------------------------------------------------------------------------
1 | # -*- mode: snippet -*-
2 | # name: hl
3 | # key: hl
4 | # expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil))
5 | # --
6 | {{< highlight $1 >}}
7 |
8 | $0
9 |
10 | {{< /highlight >}}
11 |
12 |
--------------------------------------------------------------------------------
/snippets/org-mode/post:
--------------------------------------------------------------------------------
1 | # -*- mode: snippet -*-
2 | # name: post
3 | # key: post
4 | # expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil))
5 | # --
6 | ---
7 | title: ${1:`(capitalize (replace-regexp-in-string "-\\|_" " " (file-name-base))))`}
8 | date: `(format-time-string "%Y-%m-%dT%H:%M:%S-04:00" (current-time))`
9 | tags:
10 | categories:
11 | draft: true
12 | ---
13 |
14 | $0
15 |
--------------------------------------------------------------------------------
/init.el:
--------------------------------------------------------------------------------
1 | (require 'package)
2 |
3 | (setq package-enable-at-startup nil)
4 | (add-to-list 'package-archives
5 | '("melpa" . "https://melpa.org/packages/"))
6 | ;; (add-to-list 'package-archives
7 | ;; '("gnu" . "https://elpa.gnu.org/packages/"))
8 | (package-initialize)
9 |
10 | (unless (package-installed-p 'use-package)
11 | (package-refresh-contents)
12 | (package-install 'use-package))
13 |
14 | (org-babel-load-file (expand-file-name "~/.emacs.d/README.org"))
15 |
16 | (custom-set-variables
17 | ;; custom-set-variables was added by Custom.
18 | ;; If you edit it by hand, you could mess it up, so be careful.
19 | ;; Your init file should contain only one such instance.
20 | ;; If there is more than one, they won't work right.
21 | '(org-confirm-babel-evaluate nil)
22 | '(org-default-notes-file (concat org-directory "/notes.org"))
23 | '(org-directory "~/Sync/orgfiles")
24 | '(org-export-html-postamble nil)
25 | '(org-export-with-toc nil)
26 | '(org-hide-leading-stars t)
27 | '(org-src-fontify-natively t)
28 | '(org-startup-folded 'overview)
29 | '(org-startup-indented t)
30 | '(package-selected-packages
31 | '(consult ctrlf selectrum org-mime zenburn-theme yasnippet-snippets yasnippet-classic-snippets which-key w3m vterm try tao-theme string-utils smartparens rg rainbow-delimiters quelpa-use-package poet-theme perspective pcre2el parchment-theme ox-reveal origami org-msg org-gcal org-bullets openwith ob-restclient ob-prolog nnreddit nnhackernews nameframe-projectile mu4e-views mu4e-alert monokai-theme moe-theme modus-vivendi-theme modus-operandi-theme lsp-ui lsp-jedi lsp-javacomp lsp-java lsp-haskell keypression jedi ivy-rich irony-eldoc iedit ibuffer-projectile hungry-delete hlinum gruvbox-theme grip-mode git-timemachine git-gutter-fringe ftable forge focus flycheck floobits fish-completion faff-theme expand-region exec-path-from-shell eshell-git-prompt elfeed-org elfeed-goodies eglot dumb-jump doom-modeline diredfl dired-recent default-text-scale counsel company-restclient color-theme-modern cloud-theme clj-refactor circe-notifications burly bufler ample-zen-theme ample-theme alect-themes aggressive-indent)))
32 | (custom-set-faces
33 | ;; custom-set-faces was added by Custom.
34 | ;; If you edit it by hand, you could mess it up, so be careful.
35 | ;; Your init file should contain only one such instance.
36 | ;; If there is more than one, they won't work right.
37 | )
38 |
--------------------------------------------------------------------------------
/README.org:
--------------------------------------------------------------------------------
1 | #+STARTUP: overview
2 | #+PROPERTY: header-args :comments yes :results silent
3 | * Packages to add or look into
4 | - embark
5 | - consult
6 | - marginalia
7 | - MU4E Views
8 | - crux
9 | - perspetctiv
10 | - tab bar
11 | - literate calc mode
12 | - org-superstar
13 | - selectrum
14 | - ctrlf
15 | - moom
16 | - telephone-line
17 | - org-download
18 | - spelling stuff
19 | - eyebrowse
20 | - smart-jump
21 | - deadgrep
22 | - rg
23 | - diff-hl
24 | - YCMD maybe for emacs and header file completions
25 | - god mode
26 | - mbsync
27 | - popup-kill-ring
28 | - discover-my-major
29 | - treemacs (treemacs-magit, projectile)
30 | - amx
31 | - mathewZM
32 | - ivy-omni-org
33 | - ivy-explorer
34 | - ivy-rich
35 | - cloud-theme
36 | - general.el
37 | - focus mode
38 | - multiple cursors again
39 | - ranger /deer
40 | * repos
41 | #+BEGIN_SRC emacs-lisp
42 | (add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
43 |
44 | #+END_SRC
45 |
46 |
47 | * My Misc Functions
48 | #+BEGIN_SRC emacs-lisp
49 |
50 | (defun load-if-exists (f)
51 | "load the elisp file only if it exists and is readable"
52 | (if (file-readable-p f)
53 | (load-file f)))
54 |
55 | ;; font scaling
56 | (use-package default-text-scale
57 | :ensure t
58 | :config
59 | (global-set-key (kbd "C-M-=") 'default-text-scale-increase)
60 | (global-set-key (kbd "C-M--") 'default-text-scale-decrease))
61 |
62 |
63 | ;; narrow/widen dwim
64 | ; if you're windened, narrow to the region, if you're narrowed, widen
65 | ; bound to C-x n
66 | (defun narrow-or-widen-dwim (p)
67 | "If the buffer is narrowed, it widens. Otherwise, it narrows intelligently.
68 | Intelligently means: region, org-src-block, org-subtree, or defun,
69 | whichever applies first.
70 | Narrowing to org-src-block actually calls `org-edit-src-code'.
71 |
72 | With prefix P, don't widen, just narrow even if buffer is already
73 | narrowed."
74 | (interactive "P")
75 | (declare (interactive-only))
76 | (cond ((and (buffer-narrowed-p) (not p)) (widen))
77 | ((region-active-p)
78 | (narrow-to-region (region-beginning) (region-end)))
79 | ((derived-mode-p 'org-mode)
80 | ;; `org-edit-src-code' is not a real narrowing command.
81 | ;; Remove this first conditional if you don't want it.
82 | (cond ((ignore-errors (org-edit-src-code))
83 | (delete-other-windows))
84 | ((org-at-block-p)
85 | (org-narrow-to-block))
86 | (t (org-narrow-to-subtree))))
87 | (t (narrow-to-defun))))
88 |
89 | ;; (define-key endless/toggle-map "n" #'narrow-or-widen-dwim)
90 | ;; This line actually replaces Emacs' entire narrowing keymap, that's
91 | ;; how much I like this command. Only copy it if that's what you want.
92 | (define-key ctl-x-map "n" #'narrow-or-widen-dwim)
93 |
94 |
95 |
96 | #+END_SRC
97 | * interface tweaks
98 | #+BEGIN_SRC emacs-lisp
99 | (setq inhibit-startup-message t)
100 | (tool-bar-mode -1)
101 | (fset 'yes-or-no-p 'y-or-n-p)
102 |
103 | (setenv "BROWSER" "firefox")t
104 |
105 | (use-package parchment-theme :ensure t)
106 | (use-package cloud-theme :ensure t)
107 | (use-package moe-theme :ensure t)
108 | (use-package zenburn-theme :ensure t)
109 | (use-package monokai-theme :ensure t)
110 | (use-package gruvbox-theme :ensure t)
111 | (use-package ample-theme :ensure t)
112 | (use-package ample-zen-theme :ensure t)
113 | (use-package alect-themes :ensure t)
114 | (use-package tao-theme :ensure t)
115 | (use-package poet-theme :ensure t)
116 | (use-package modus-operandi-theme :ensure t)
117 | (use-package modus-vivendi-theme :ensure t)
118 | (use-package faff-theme :ensure t)
119 | (use-package color-theme-modern :ensure t)
120 | (load-theme 'modus-operandi t)
121 |
122 | (use-package doom-modeline
123 | :ensure t)
124 | (doom-modeline-init)
125 |
126 |
127 | ;; expand the marked region in semantic increments
128 | ;;(negative prefix to reduce region)
129 | (use-package expand-region
130 | :ensure t
131 | :config
132 | (global-set-key (kbd "C-=") 'er/expand-region))
133 |
134 | (setq save-interprogram-paste-before-kill t)
135 |
136 | (use-package hungry-delete
137 | :ensure t
138 | :config
139 | (global-hungry-delete-mode))
140 |
141 | (global-auto-revert-mode 1) ;; you might not want this
142 | (setq auto-revert-verbose nil) ;; or this
143 | (global-set-key (kbd "") 'revert-buffer)
144 |
145 | (use-package aggressive-indent
146 | :ensure t
147 | :config
148 | ;; (global-aggressive-indent-mode 1)
149 | ;;(add-to-list 'aggressive-indent-excluded-modes 'html-mode)
150 | )
151 |
152 |
153 | (use-package ace-window
154 | :ensure t
155 | :config
156 | (setq aw-scope 'frame) ;; was global
157 | (global-set-key (kbd "C-x O") 'other-frame)
158 | (global-set-key [remap other-window] 'ace-window))
159 | #+END_SRC
160 |
161 | #+BEGIN_SRC emacs-lisp
162 |
163 | (use-package try :ensure t)
164 | (use-package posframe :ensure t)
165 | (use-package iedit
166 | :ensure t)
167 |
168 | (use-package which-key
169 | :ensure t
170 | :config
171 | (which-key-mode))
172 |
173 | #+END_SRC
174 |
175 | #+BEGIN_SRC emacs-lisp
176 | (use-package pcre2el
177 | :ensure t
178 | :config
179 | (pcre-mode)
180 | )
181 |
182 | (add-hook 'org-mode-hook 'turn-on-flyspell)
183 | (add-hook 'org-mode-hook 'turn-on-auto-fill)
184 | (add-hook 'mu4e-compose-mode-hook 'turn-on-flyspell)
185 | (add-hook 'mu4e-compose-mode-hook 'turn-on-auto-fill)
186 |
187 |
188 | #+END_SRC
189 |
190 | #+BEGIN_SRC emacs-lisp
191 | ;; (use-package hlinum
192 | ;; :ensure t
193 | ;; :config
194 | ;; (hlinum-activate)
195 | ;; (global-linum-mode)
196 |
197 | ;; )
198 | #+END_SRC
199 | * Selectrum / ctrlf
200 |
201 | #+begin_src emacs-lisp :tangle no
202 | (use-package selectrum
203 | :ensure t)
204 | (selectrum-mode +1)
205 |
206 |
207 |
208 | (use-package consult :ensure t)
209 | #+end_src
210 |
211 | * Swiper / Ivy / Counsel
212 | Swiper gives us a really efficient incremental search with regular expressions
213 | and Ivy / Counsel replace a lot of ido or helms completion functionality
214 | #+BEGIN_SRC emacs-lisp
215 |
216 |
217 |
218 |
219 | (use-package counsel
220 | :ensure t
221 | :bind
222 | (("M-y" . counsel-yank-pop)
223 | :map ivy-minibuffer-map
224 | ("M-y" . ivy-next-line)))
225 |
226 | (use-package ivy
227 | :ensure t
228 | :diminish (ivy-mode)
229 | :bind (("C-x b" . ivy-switch-buffer))
230 | :config
231 | (ivy-mode 1)
232 | (setq ivy-use-virtual-buffers t)
233 | (setq ivy-count-format "%d/%d ")
234 | (setq ivy-display-style 'fancy))
235 |
236 |
237 | ;; (use-package swiper
238 | ;; :ensure t
239 | ;; :bind (("C-s" . swiper-isearch)
240 | ;; ("C-r" . swiper-isearch)
241 | ;; ("C-c C-r" . ivy-resume)
242 | ;; ("M-x" . counsel-M-x)
243 | ;; ("C-x C-f" . counsel-find-file))
244 | ;; :config
245 | ;; (progn
246 | ;; (ivy-mode 1)
247 | ;; (setq ivy-use-virtual-buffers t)
248 | ;; (setq ivy-display-style 'fancy)
249 | ;; (define-key read-expression-map (kbd "C-r") 'counsel-expression-history)
250 | ;; ))
251 | #+END_SRC
252 |
253 | * CTRLF
254 | #+begin_src emacs-lisp
255 | (use-package ctrlf
256 | :ensure t)
257 | (ctrlf-mode +1)
258 |
259 | #+end_src
260 |
261 | * buffer stuff
262 |
263 | #+begin_src emacs-lisp :tangle no
264 | (use-package bufler :ensure t)
265 | (defun mz/bufler-one-window (&optional force-refresh)
266 | (interactive "P")
267 | (bufler-list)
268 | (delete-other-windows)
269 |
270 | )
271 |
272 | (global-set-key (kbd "C-x C-b") 'mz/bufler-one-window)
273 |
274 | #+end_src
275 |
276 | #+BEGIN_SRC emacs-lisp
277 |
278 | (global-set-key (kbd "C-x C-b") 'ibuffer)
279 | (setq ibuffer-saved-filter-groups
280 | (quote (("default"
281 | ("dired" (mode . dired-mode))
282 | ("org" (name . "^.*org$"))
283 | ("magit" (mode . magit-mode))
284 | ("IRC" (or (mode . circe-channel-mode) (mode . circe-server-mode)))
285 | ("web" (or (mode . web-mode) (mode . js2-mode)))
286 | ("shell" (or (mode . eshell-mode) (mode . shell-mode)))
287 | ("mu4e" (or
288 |
289 | (mode . mu4e-compose-mode)
290 | (name . "\*mu4e\*")
291 | ))
292 | ("programming" (or
293 | (mode . clojure-mode)
294 | (mode . clojurescript-mode)
295 | (mode . python-mode)
296 | (mode . c++-mode)))
297 | ("emacs" (or
298 | (name . "^\\*scratch\\*$")
299 | (name . "^\\*Messages\\*$")))
300 | ))))
301 | (add-hook 'ibuffer-mode-hook
302 | (lambda ()
303 | (ibuffer-auto-mode 1)
304 | (ibuffer-switch-to-saved-filter-groups "default")))
305 |
306 | ;; don't show these
307 | ;(add-to-list 'ibuffer-never-show-predicates "zowie")
308 | ;; Don't show filter groups if there are no buffers in that group
309 | (setq ibuffer-show-empty-filter-groups nil)
310 |
311 | ;; Don't ask for confirmation to delete marked buffers
312 | (setq ibuffer-expert t)
313 |
314 | #+END_SRC
315 | * Flycheck
316 | #+BEGIN_SRC emacs-lisp
317 | (use-package flycheck
318 | :ensure t
319 | :init
320 | (global-flycheck-mode t))
321 |
322 | #+END_SRC
323 |
324 | * Hydra
325 | #+BEGIN_SRC emacs-lisp
326 | (use-package hydra
327 | :ensure t)
328 |
329 | #+END_SRC
330 | * Folding - Origami
331 | #+BEGIN_SRC emacs-lisp
332 | (use-package origami
333 | :ensure t)
334 | #+END_SRC
335 |
336 | #+BEGIN_SRC emacs-lisp
337 | (use-package origami
338 | :ensure t)
339 |
340 | (defhydra hydra-origami (:color red)
341 | "
342 | _o_pen node _n_ext fold toggle _f_orward
343 | _c_lose node _p_revious fold toggle _a_ll
344 | "
345 | ("o" origami-open-node)
346 | ("c" origami-close-node)
347 | ("n" origami-next-fold)
348 | ("p" origami-previous-fold)
349 | ("f" origami-forward-toggle-node)
350 | ("a" origami-toggle-all-nodes))
351 |
352 |
353 |
354 |
355 | #+END_SRC
356 | * Magit and git stuff
357 | #+BEGIN_SRC emacs-lisp
358 |
359 | ;; some ediff settings
360 | (setq ediff-diff-options "")
361 | (setq ediff-custom-diff-options "-u")
362 | (setq ediff-window-setup-function 'ediff-setup-windows-plain)
363 | (setq ediff-split-window-function 'split-window-vertically)
364 |
365 | (use-package magit
366 | :ensure t
367 | :init
368 | (progn
369 | (setq magit-section-initial-visibility-alist
370 | '((stashes . hide) (untracked . hide) (unpushed . hide)))
371 |
372 |
373 | (bind-key "C-x g" 'magit-status)
374 | ))
375 |
376 | (setq magit-status-margin
377 | '(t "%Y-%m-%d %H:%M " magit-log-margin-width t 18))
378 |
379 | (use-package git-timemachine
380 | :ensure t
381 | )
382 |
383 | (use-package git-gutter-fringe
384 | :ensure t
385 | :config
386 | (global-git-gutter-mode))
387 |
388 |
389 |
390 |
391 | (use-package smerge-mode
392 | :after hydra
393 | :config
394 | (defhydra unpackaged/smerge-hydra
395 | (:color pink :hint nil :post (smerge-auto-leave))
396 | "
397 | ^Move^ ^Keep^ ^Diff^ ^Other^
398 | ^^-----------^^-------------------^^---------------------^^-------
399 | _n_ext _b_ase _<_: upper/base _C_ombine
400 | _p_rev _u_pper _=_: upper/lower _r_esolve
401 | ^^ _l_ower _>_: base/lower _k_ill current
402 | ^^ _a_ll _R_efine
403 | ^^ _RET_: current _E_diff
404 | "
405 | ("n" smerge-next)
406 | ("p" smerge-prev)
407 | ("b" smerge-keep-base)
408 | ("u" smerge-keep-upper)
409 | ("l" smerge-keep-lower)
410 | ("a" smerge-keep-all)
411 | ("RET" smerge-keep-current)
412 | ("\C-m" smerge-keep-current)
413 | ("<" smerge-diff-base-upper)
414 | ("=" smerge-diff-upper-lower)
415 | (">" smerge-diff-base-lower)
416 | ("R" smerge-refine)
417 | ("E" smerge-ediff)
418 | ("C" smerge-combine-with-next)
419 | ("r" smerge-resolve)
420 | ("k" smerge-kill-current)
421 | ("ZZ" (lambda ()
422 | (interactive)
423 | (save-buffer)
424 | (bury-buffer))
425 | "Save and bury buffer" :color blue)
426 | ("q" nil "cancel" :color blue))
427 | :hook (magit-diff-visit-file . (lambda ()
428 | (when smerge-mode
429 | (unpackaged/smerge-hydra/body)))))
430 |
431 |
432 |
433 | (use-package forge
434 | :ensure t)
435 |
436 | #+END_SRC
437 |
438 | * ORG-mode stuff
439 | #+BEGIN_SRC emacs-lisp
440 | (use-package ox-reveal :ensure t)
441 | (require 'org-protocol)
442 | (custom-set-variables
443 | '(org-directory "~/Sync/orgfiles")
444 | '(org-default-notes-file (concat org-directory "/notes.org"))
445 | '(org-export-html-postamble nil)
446 | '(org-hide-leading-stars t)
447 | '(org-startup-folded (quote overview))
448 | '(org-startup-indented t)
449 | '(org-confirm-babel-evaluate nil)
450 | '(org-src-fontify-natively t)
451 | '(org-export-with-toc nil)
452 | )
453 |
454 |
455 | (use-package org-bullets
456 | :ensure t
457 | :config
458 | (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
459 |
460 |
461 | (global-set-key "\C-ca" 'org-agenda)
462 | (setq org-agenda-start-on-weekday nil)
463 | (setq org-agenda-custom-commands
464 | '(("c" "Simple agenda view"
465 | ((agenda "")
466 | (alltodo "")))))
467 |
468 | (global-set-key (kbd "C-c c") 'org-capture)
469 |
470 | (setq org-agenda-files (list "~/opt/gcal.org"
471 | "~/opt/soe-cal.org"
472 | "~/Sync/orgfiles/i.org"))
473 | (setq org-capture-templates
474 | '(("l" "Link" entry (file+headline "~/Sync/orgfiles/links.org" "Links")
475 | "* %a %^g\n %?\n %T\n %i")
476 | ("b" "Blog idea" entry (file+headline "~/Sync/orgfiles/i.org" "POSTS:")
477 | "* %?\n%T" :prepend t)
478 | ("t" "To Do Item" entry (file+headline "~/Sync/orgfiles/i.org" "To Do and Notes")
479 | "* TODO %?\n%u" :prepend t)
480 | ("m" "Mail To Do" entry (file+headline "~/Sync/orgfiles/i.org" "To Do and Notes")
481 | "* TODO %a\n %?" :prepend t)
482 | ("n" "Note" entry (file+olp "~/Sync/orgfiles/i.org" "Notes")
483 | "* %u %? " :prepend t)
484 | ("r" "RSS" entry (file+headline "~/Sync/shared/elfeed.org" "Feeds misc")
485 | "** %A %^g\n")
486 | ))
487 |
488 |
489 |
490 | (use-package htmlize :ensure t)
491 |
492 | (setq org-ditaa-jar-path "/usr/share/ditaa/ditaa.jar")
493 | (setq org-file-apps
494 | (append '(
495 | ("\\.pdf\\'" . "evince %s")
496 | ("\\.x?html?\\'" . "/usr/bin/firefox %s")
497 | ) org-file-apps ))
498 | ;; babel stuff
499 | (require 'ob-clojure)
500 | (require 'ob-gnuplot)
501 | (require 'ob-prolog)
502 | (use-package ob-restclient :ensure t)
503 | (require 'ob-restclient)
504 | (setq org-babel-clojure-backend 'cider)
505 |
506 | (org-babel-do-load-languages
507 | 'org-babel-load-languages
508 | '((python . t)
509 | (prolog . t)
510 | (restclient . t)
511 | (emacs-lisp . t)
512 | (gnuplot . t)
513 | (shell . t)
514 | (java . t)
515 | (C . t)
516 | (clojure . t)
517 | (js . t)
518 | (ditaa . t)
519 | (dot . t)
520 | (org . t)
521 | (latex . t )
522 | ))
523 |
524 |
525 | (setq mail-user-agent 'mu4e-user-agent)
526 | (use-package org-msg
527 | :ensure t
528 | :config
529 | (setq org-msg-options "html-postamble:nil H:5 num:nil ^:{} toc:nil tex:dvipng")
530 | (setq org-msg-startup "hidestars indent inlineimages")
531 | (setq org-msg-greeting-fmt "\n%s,\n\n")
532 | (setq org-msg-greeting-fmt-mailto t)
533 | (setq org-msg-signature "
534 | ,#+begin_signature
535 | -- *Mike* \\\\
536 | ,#+end_signature")
537 | (org-msg-mode)
538 | )
539 |
540 | (require 'ox-reveal)
541 |
542 | (require 'org-tempo) ;; to bring back easy templates using ") 'sp-unwrap-sexp)
613 | (define-key smartparens-mode-map (kbd "M-") 'sp-backward-unwrap-sexp)
614 |
615 | (define-key smartparens-mode-map (kbd "C-") 'sp-forward-slurp-sexp)
616 | (define-key smartparens-mode-map (kbd "C-") 'sp-forward-barf-sexp)
617 | (define-key smartparens-mode-map (kbd "C-M-") 'sp-backward-slurp-sexp)
618 | (define-key smartparens-mode-map (kbd "C-M-") 'sp-backward-barf-sexp)
619 |
620 | (define-key smartparens-mode-map (kbd "M-D") 'sp-splice-sexp)
621 | (define-key smartparens-mode-map (kbd "C-M-") 'sp-splice-sexp-killing-forward)
622 | (define-key smartparens-mode-map (kbd "C-M-") 'sp-splice-sexp-killing-backward)
623 | (define-key smartparens-mode-map (kbd "C-S-") 'sp-splice-sexp-killing-around)
624 |
625 | (define-key smartparens-mode-map (kbd "C-]") 'sp-select-next-thing-exchange)
626 | (define-key smartparens-mode-map (kbd "C-") 'sp-select-previous-thing)
627 | (define-key smartparens-mode-map (kbd "C-M-]") 'sp-select-next-thing)
628 |
629 | (define-key smartparens-mode-map (kbd "M-F") 'sp-forward-symbol)
630 | (define-key smartparens-mode-map (kbd "M-B") 'sp-backward-symbol)
631 |
632 | (define-key smartparens-mode-map (kbd "C-\"") 'sp-change-inner)
633 | (define-key smartparens-mode-map (kbd "M-i") 'sp-change-enclosing)
634 |
635 | (bind-key "C-c f" (lambda () (interactive) (sp-beginning-of-sexp 2)) smartparens-mode-map)
636 | (bind-key "C-c b" (lambda () (interactive) (sp-beginning-of-sexp -2)) smartparens-mode-map)
637 |
638 | (bind-key "C-M-s"
639 | (defhydra smartparens-hydra ()
640 | "Smartparens"
641 | ("d" sp-down-sexp "Down")
642 | ("e" sp-up-sexp "Up")
643 | ("u" sp-backward-up-sexp "Up")
644 | ("a" sp-backward-down-sexp "Down")
645 | ("f" sp-forward-sexp "Forward")
646 | ("b" sp-backward-sexp "Backward")
647 | ("k" sp-kill-sexp "Kill" :color blue)
648 | ("q" nil "Quit" :color blue))
649 | smartparens-mode-map)
650 |
651 | (bind-key "H-t" 'sp-prefix-tag-object smartparens-mode-map)
652 | (bind-key "H-p" 'sp-prefix-pair-object smartparens-mode-map)
653 | (bind-key "H-y" 'sp-prefix-symbol-object smartparens-mode-map)
654 | (bind-key "H-h" 'sp-highlight-current-sexp smartparens-mode-map)
655 | (bind-key "H-e" 'sp-prefix-save-excursion smartparens-mode-map)
656 | (bind-key "H-s c" 'sp-convolute-sexp smartparens-mode-map)
657 | (bind-key "H-s a" 'sp-absorb-sexp smartparens-mode-map)
658 | (bind-key "H-s e" 'sp-emit-sexp smartparens-mode-map)
659 | (bind-key "H-s p" 'sp-add-to-previous-sexp smartparens-mode-map)
660 | (bind-key "H-s n" 'sp-add-to-next-sexp smartparens-mode-map)
661 | (bind-key "H-s j" 'sp-join-sexp smartparens-mode-map)
662 | (bind-key "H-s s" 'sp-split-sexp smartparens-mode-map)
663 | (bind-key "H-s r" 'sp-rewrap-sexp smartparens-mode-map)
664 | (defvar hyp-s-x-map)
665 | (define-prefix-command 'hyp-s-x-map)
666 | (bind-key "H-s x" hyp-s-x-map smartparens-mode-map)
667 | (bind-key "H-s x x" 'sp-extract-before-sexp smartparens-mode-map)
668 | (bind-key "H-s x a" 'sp-extract-after-sexp smartparens-mode-map)
669 | (bind-key "H-s x s" 'sp-swap-enclosing-sexp smartparens-mode-map)
670 |
671 | (bind-key "C-x C-t" 'sp-transpose-hybrid-sexp smartparens-mode-map)
672 |
673 | (bind-key ";" 'sp-comment emacs-lisp-mode-map)
674 |
675 | (bind-key [remap c-electric-backspace] 'sp-backward-delete-char smartparens-strict-mode-map)
676 |
677 | ;;;;;;;;;;;;;;;;;;
678 | ;; pair management
679 |
680 | (sp-local-pair 'minibuffer-inactive-mode "'" nil :actions nil)
681 | (bind-key "C-(" 'sp---wrap-with-40 minibuffer-local-map)
682 |
683 | (sp-with-modes 'org-mode
684 | (sp-local-pair "=" "=" :wrap "C-="))
685 |
686 | (sp-with-modes 'textile-mode
687 | (sp-local-pair "*" "*")
688 | (sp-local-pair "_" "_")
689 | (sp-local-pair "@" "@"))
690 |
691 | (sp-with-modes 'web-mode
692 | (sp-local-pair "{{#if" "{{/if")
693 | (sp-local-pair "{{#unless" "{{/unless"))
694 |
695 | ;;; tex-mode latex-mode
696 | (sp-with-modes '(tex-mode plain-tex-mode latex-mode)
697 | (sp-local-tag "i" "\"<" "\">"))
698 |
699 | ;;; lisp modes
700 | (sp-with-modes sp--lisp-modes
701 | (sp-local-pair "(" nil
702 | :wrap "C-("
703 | :pre-handlers '(my-add-space-before-sexp-insertion)
704 | :post-handlers '(my-add-space-after-sexp-insertion)))
705 |
706 | (defun my-add-space-after-sexp-insertion (id action _context)
707 | (when (eq action 'insert)
708 | (save-excursion
709 | (forward-char (sp-get-pair id :cl-l))
710 | (when (or (eq (char-syntax (following-char)) ?w)
711 | (looking-at (sp--get-opening-regexp)))
712 | (insert " ")))))
713 |
714 | (defun my-add-space-before-sexp-insertion (id action _context)
715 | (when (eq action 'insert)
716 | (save-excursion
717 | (backward-char (length id))
718 | (when (or (eq (char-syntax (preceding-char)) ?w)
719 | (and (looking-back (sp--get-closing-regexp))
720 | (not (eq (char-syntax (preceding-char)) ?'))))
721 | (insert " ")))))
722 |
723 | ;;; C++
724 | (sp-with-modes '(malabar-mode c++-mode)
725 | (sp-local-pair "{" nil :post-handlers '(("||\n[i]" "RET"))))
726 | (sp-local-pair 'c++-mode "/*" "*/" :post-handlers '((" | " "SPC")
727 | ("* ||\n[i]" "RET")))
728 |
729 | (setq-default sp-escape-quotes-after-insert nil)
730 |
731 | (sp-local-pair 'js2-mode "/**" "*/" :post-handlers '(("| " "SPC")
732 | ("* ||\n[i]" "RET")))
733 | (smartparens-global-mode)
734 | )
735 |
736 |
737 | (use-package rainbow-delimiters
738 | :ensure t
739 | :config
740 | (add-hook 'clojure-mode-hook #'rainbow-delimiters-mode)
741 | )
742 | (show-paren-mode t)
743 |
744 | #+END_SRC
745 | * Snippets
746 | #+BEGIN_SRC emacs-lisp
747 | (use-package yasnippet
748 | :ensure t
749 | :init
750 | (yas-global-mode 1))
751 |
752 | (use-package yasnippet-snippets
753 | :ensure t)
754 | (use-package yasnippet-classic-snippets
755 | :ensure t)
756 |
757 | #+END_SRC
758 |
759 | * Projectile
760 | #+BEGIN_SRC emacs-lisp
761 |
762 | (use-package projectile
763 | :ensure t
764 | :bind (:map projectile-mode-map
765 | ("s-p" . 'projectile-command-map)
766 | ("C-c p" . 'projectile-command-map)
767 | )
768 |
769 | :config
770 | (setq projectile-completion-system 'ivy)
771 |
772 | (projectile-mode +1))
773 |
774 |
775 | ;; (use-package ibuffer-projectile
776 | ;; :ensure t
777 | ;; :config
778 | ;; (add-hook 'ibuffer-hook
779 | ;; (lambda ()
780 | ;; (ibuffer-projectile-set-filter-groups)
781 | ;; (unless (eq ibuffer-sorting-mode 'alphabetic)
782 | ;; (ibuffer-do-sort-by-alphabetic))))
783 | ;;)
784 | #+END_SRC
785 | * Company
786 | #+BEGIN_SRC emacs-lisp
787 | (use-package company
788 | :ensure t
789 | :config
790 | (setq company-idle-delay 0)
791 | (setq company-minimum-prefix-length 3)
792 |
793 | (global-company-mode t)
794 | )
795 |
796 | #+END_SRC
797 |
798 | * Dumb jump
799 | #+BEGIN_SRC emacs-lisp
800 |
801 | (use-package dumb-jump
802 | :bind (("M-g o" . dumb-jump-go-other-window)
803 | ("M-g j" . dumb-jump-go)
804 | ("M-g x" . dumb-jump-go-prefer-external)
805 | ("M-g z" . dumb-jump-go-prefer-external-other-window))
806 | :config
807 | ;; (setq dumb-jump-selector 'ivy) ;; (setq dumb-jump-selector 'helm)
808 | :init
809 | (dumb-jump-mode)
810 | :ensure
811 | )
812 |
813 |
814 |
815 | #+END_SRC
816 | * Restclient
817 | #+BEGIN_SRC emacs-lisp
818 | (use-package restclient
819 | :ensure t)
820 | (use-package company-restclient
821 | :ensure t
822 | :config
823 | (add-to-list 'company-backends 'company-restclient))
824 | #+END_SRC
825 |
826 | * Multiple Cursors
827 | #+BEGIN_SRC emacs-lisp
828 | (use-package multiple-cursors
829 | :ensure t
830 | )
831 |
832 | (defhydra hydra-multiple-cursors (:hint nil)
833 | "
834 | Up^^ Down^^ Miscellaneous % 2(mc/num-cursors) cursor%s(if (> (mc/num-cursors) 1) \"s\" \"\")
835 | ------------------------------------------------------------------
836 | [_p_] Next [_n_] Next [_l_] Edit lines [_0_] Insert numbers
837 | [_P_] Skip [_N_] Skip [_a_] Mark all [_A_] Insert letters
838 | [_M-p_] Unmark [_M-n_] Unmark [_s_] Search
839 | [Click] Cursor at point [_q_] Quit"
840 | ("l" mc/edit-lines :exit t)
841 | ("a" mc/mark-all-like-this :exit t)
842 | ("n" mc/mark-next-like-this)
843 | ("N" mc/skip-to-next-like-this)
844 | ("M-n" mc/unmark-next-like-this)
845 | ("p" mc/mark-previous-like-this)
846 | ("P" mc/skip-to-previous-like-this)
847 | ("M-p" mc/unmark-previous-like-this)
848 | ("s" mc/mark-all-in-region-regexp :exit t)
849 | ("0" mc/insert-numbers :exit t)
850 | ("A" mc/insert-letters :exit t)
851 | ("" mc/add-cursor-on-click)
852 | ;; Help with click recognition in this hydra
853 | ("" ignore)
854 | ("" ignore)
855 | ("q" nil))
856 |
857 |
858 | #+END_SRC
859 | * focus mode
860 | #+BEGIN_SRC emacs-lisp
861 | (use-package focus
862 | :ensure t
863 | )
864 | #+END_SRC
865 | * ivy-rich
866 | #+BEGIN_SRC emacs-lisp
867 | (use-package ivy-rich
868 | :ensure t
869 | :config
870 | (ivy-rich-mode 1)
871 | )
872 | #+END_SRC
873 | * eshell
874 | #+BEGIN_SRC emacs-lisp
875 |
876 | (use-package exec-path-from-shell
877 | :ensure t
878 | :config
879 | (exec-path-from-shell-initialize))
880 |
881 |
882 | (use-package fish-completion
883 | :ensure t
884 | :config
885 | (global-fish-completion-mode))
886 | ;; (use-package eshell-prompt-extras
887 | ;; :ensure t
888 | ;; :config
889 | ;; (setq epe-show-python-info nil)
890 | ;; )
891 |
892 | (use-package eshell-git-prompt
893 | :ensure t
894 | :config
895 | (eshell-git-prompt-use-theme 'git-radar)
896 | )
897 |
898 |
899 | (setq scroll-step 1)
900 | #+END_SRC
901 |
902 | #+BEGIN_SRC emacs-lisp
903 | (require 'cl-lib)
904 | (defun select-or-create (arg)
905 | "Commentary ARG."
906 | (if (string= arg "New eshell")
907 | (eshell t)
908 | (switch-to-buffer arg)))
909 | (defun eshell-switcher (&optional arg)
910 | "Commentary ARG."
911 | (interactive)
912 | (let* (
913 | (buffers (cl-remove-if-not (lambda (n) (eq (buffer-local-value 'major-mode n) 'eshell-mode)) (buffer-list)) )
914 | (names (mapcar (lambda (n) (buffer-name n)) buffers))
915 | (num-buffers (length buffers) )
916 | (in-eshellp (eq major-mode 'eshell-mode)))
917 | (cond ((eq num-buffers 0) (eshell (or arg t)))
918 | ((not in-eshellp) (switch-to-buffer (car buffers)))
919 | (t (select-or-create (completing-read "Select Shell:" (cons "New eshell" names)))))))
920 |
921 |
922 |
923 | (defun eshell/in-term (prog &rest args)
924 | "Run shell command in term buffer."
925 | (switch-to-buffer (apply #'make-term prog prog nil args))
926 | (term-mode)
927 | (term-char-mode))
928 |
929 |
930 | #+END_SRC
931 | * personal keymap
932 | #+BEGIN_SRC emacs-lisp
933 |
934 | (defun org-agenda-show-agenda-and-todo (&optional arg)
935 | (interactive "P")
936 | (org-agenda arg "c")
937 | (org-agenda-fortnight-view))
938 |
939 | (defun z/load-iorg ()
940 | (interactive )
941 | (find-file "~/Sync/orgfiles/i.org"))
942 |
943 | ;; set up my own map
944 | (define-prefix-command 'z-map)
945 | (global-set-key (kbd "C-z") 'z-map) ;; was C-1
946 | (define-key z-map (kbd "k") 'compile)
947 | (define-key z-map (kbd "c") 'hydra-multiple-cursors/body)
948 | (define-key z-map (kbd "f") 'hydra-origami/body)
949 | (define-key z-map (kbd "m") 'mu4e)
950 | (define-key z-map (kbd "1") 'org-global-cycle)
951 | (define-key z-map (kbd "a") 'org-agenda-show-agenda-and-todo)
952 | (define-key z-map (kbd "g") 'counsel-ag)
953 | (define-key z-map (kbd "2") 'make-frame-command)
954 | (define-key z-map (kbd "0") 'delete-frame)
955 | (define-key z-map (kbd "o") 'other-frame)
956 |
957 | (define-key z-map (kbd "s") 'flyspell-correct-word-before-point)
958 | (define-key z-map (kbd "i") 'z/load-iorg)
959 | (define-key z-map (kbd "*") 'calc)
960 | (define-key z-map (kbd "e") 'eshell-switcher)
961 |
962 | (setq user-full-name "Mike Zamansky"
963 | user-mail-address "mz631@hunter.cuny.edu")
964 | ;;--------------------------------------------------------------------------
965 |
966 |
967 | (global-set-key (kbd "\e\ei")
968 | (lambda () (interactive) (find-file "~/Sync/orgfiles/i.org")))
969 |
970 | (global-set-key (kbd "\e\el")
971 | (lambda () (interactive) (find-file "~/Sync/orgfiles/links.org")))
972 |
973 | (global-set-key (kbd "\e\ec")
974 | (lambda () (interactive) (find-file "~/.emacs.d/README.org")))
975 |
976 | (global-set-key (kbd "") 'move-end-of-line)
977 |
978 | (global-set-key [mouse-3] 'flyspell-correct-word-before-point)
979 |
980 | #+END_SRC
981 |
982 | #+RESULTS:
983 | : origami-toggle-node
984 |
985 | # LocalWords: DIRED Javascript Screencasts Autocomplete
986 | * Elfeed
987 | #+BEGIN_SRC emacs-lisp
988 | (setq elfeed-db-directory "~/Sync/shared/elfeeddb")
989 |
990 | (defun mz/elfeed-browse-url (&optional use-generic-p)
991 | "Visit the current entry in your browser using `browse-url'.
992 | If there is a prefix argument, visit the current entry in the
993 | browser defined by `browse-url-generic-program'."
994 | (interactive "P")
995 | (let ((entries (elfeed-search-selected)))
996 | (cl-loop for entry in entries
997 | do (if use-generic-p
998 | (browse-url-generic (elfeed-entry-link entry))
999 | (browse-url (elfeed-entry-link entry))))
1000 | (mapc #'elfeed-search-update-entry entries)
1001 | (unless (or elfeed-search-remain-on-entry (use-region-p))
1002 | ;;(forward-line)
1003 | )))
1004 |
1005 |
1006 |
1007 | (defun elfeed-mark-all-as-read ()
1008 | (interactive)
1009 | (mark-whole-buffer)
1010 | (elfeed-search-untag-all-unread))
1011 |
1012 |
1013 | ;;functions to support syncing .elfeed between machines
1014 | ;;makes sure elfeed reads index from disk before launching
1015 | (defun bjm/elfeed-load-db-and-open ()
1016 | "Wrapper to load the elfeed db from disk before opening"
1017 | (interactive)
1018 | (elfeed-db-load)
1019 | (elfeed)
1020 | (elfeed-search-update--force))
1021 |
1022 | ;;write to disk when quiting
1023 | (defun bjm/elfeed-save-db-and-bury ()
1024 | "Wrapper to save the elfeed db to disk before burying buffer"
1025 | (interactive)
1026 | (elfeed-db-save)
1027 | (quit-window))
1028 |
1029 |
1030 |
1031 |
1032 | (use-package elfeed
1033 | :ensure t
1034 | :bind (:map elfeed-search-mode-map
1035 | ("q" . bjm/elfeed-save-db-and-bury)
1036 | ("Q" . bjm/elfeed-save-db-and-bury)
1037 | ("m" . elfeed-toggle-star)
1038 | ("M" . elfeed-toggle-star)
1039 | ("j" . mz/make-and-run-elfeed-hydra)
1040 | ("J" . mz/make-and-run-elfeed-hydra)
1041 | ("b" . mz/elfeed-browse-url)
1042 | ("B" . elfeed-search-browse-url)
1043 | )
1044 | :config
1045 | (defalias 'elfeed-toggle-star
1046 | (elfeed-expose #'elfeed-search-toggle-all 'star))
1047 |
1048 | )
1049 |
1050 | (use-package elfeed-goodies
1051 | :ensure t
1052 | :config
1053 | (elfeed-goodies/setup))
1054 |
1055 |
1056 | (use-package elfeed-org
1057 | :ensure t
1058 | :config
1059 | (elfeed-org)
1060 | (setq rmh-elfeed-org-files (list "~/Sync/shared/elfeed.org")))
1061 |
1062 |
1063 |
1064 |
1065 |
1066 | (defun z/hasCap (s) ""
1067 | (let ((case-fold-search nil))
1068 | (string-match-p "[[:upper:]]" s)
1069 | ))
1070 |
1071 |
1072 | (defun z/get-hydra-option-key (s)
1073 | "returns single upper case letter (converted to lower) or first"
1074 | (interactive)
1075 | (let ( (loc (z/hasCap s)))
1076 | (if loc
1077 | (downcase (substring s loc (+ loc 1)))
1078 | (substring s 0 1)
1079 | )))
1080 |
1081 | ;; (active blogs cs eDucation emacs local misc sports star tech unread webcomics)
1082 | (defun mz/make-elfeed-cats (tags)
1083 | "Returns a list of lists. Each one is line for the hydra configuratio in the form
1084 | (c function hint)"
1085 | (interactive)
1086 | (mapcar (lambda (tag)
1087 | (let* (
1088 | (tagstring (symbol-name tag))
1089 | (c (z/get-hydra-option-key tagstring))
1090 | )
1091 | (list c (append '(elfeed-search-set-filter) (list (format "@6-months-ago +%s" tagstring) ))tagstring )))
1092 | tags))
1093 |
1094 |
1095 |
1096 |
1097 |
1098 | (defmacro mz/make-elfeed-hydra ()
1099 | `(defhydra mz/hydra-elfeed ()
1100 | "filter"
1101 | ,@(mz/make-elfeed-cats (elfeed-db-get-all-tags))
1102 | ("*" (elfeed-search-set-filter "@6-months-ago +star") "Starred")
1103 | ("M" elfeed-toggle-star "Mark")
1104 | ("A" (elfeed-search-set-filter "@6-months-ago") "All")
1105 | ("T" (elfeed-search-set-filter "@1-day-ago") "Today")
1106 | ("Q" bjm/elfeed-save-db-and-bury "Quit Elfeed" :color blue)
1107 | ("q" nil "quit" :color blue)
1108 | ))
1109 |
1110 |
1111 |
1112 |
1113 | (defun mz/make-and-run-elfeed-hydra ()
1114 | ""
1115 | (interactive)
1116 | (mz/make-elfeed-hydra)
1117 | (mz/hydra-elfeed/body))
1118 |
1119 |
1120 | (defun my-elfeed-tag-sort (a b)
1121 | (let* ((a-tags (format "%s" (elfeed-entry-tags a)))
1122 | (b-tags (format "%s" (elfeed-entry-tags b))))
1123 | (if (string= a-tags b-tags)
1124 | (< (elfeed-entry-date b) (elfeed-entry-date a)))
1125 | (string< a-tags b-tags)))
1126 |
1127 |
1128 | (setf elfeed-search-sort-function #'my-elfeed-tag-sort)
1129 | #+END_SRC
1130 | * dired stuff
1131 | #+BEGIN_SRC emacs-lisp
1132 | (use-package diredfl
1133 | :ensure t
1134 | :config
1135 | (diredfl-global-mode 1))
1136 |
1137 | (setq
1138 | dired-listing-switches "-lXGh --group-directories-first"
1139 | dired-dwim-target t)
1140 | (add-hook 'dired-mode-hook 'dired-hide-details-mode)
1141 |
1142 |
1143 |
1144 | (use-package dired-recent
1145 | :ensure t
1146 | :config
1147 |
1148 | (dired-recent-mode 1)
1149 | )
1150 |
1151 |
1152 | (defun my-dired-recent-dirs ()
1153 | "Present a list of recently used directories and open the selected one in dired"
1154 | (interactive)
1155 | (let ((dir (ivy-read "Directory: "
1156 | dired-recent-directories
1157 | :re-builder #'ivy--regex
1158 | :sort nil
1159 | :initial-input nil)))
1160 | (dired dir)))
1161 |
1162 | (setq dired-guess-shell-alist-user '(("" "xdg-open")))
1163 |
1164 | #+END_SRC
1165 | ** floobits
1166 | #+begin_src emacs-lisp
1167 | (use-package floobits :ensure t)
1168 | #+end_src
1169 | * RG - ripgrep
1170 | #+begin_src emacs-lisp
1171 | (use-package rg
1172 | :ensure t
1173 | :config
1174 | (rg-enable-default-bindings))
1175 | ;;(rg-enable-menu))
1176 | #+end_src
1177 | * open alternative from Xah Lee
1178 | #+begin_src emacs-lisp
1179 | (defun xah-open-in-external-app (&optional @fname)
1180 | "Open the current file or dired marked files in external app.
1181 | The app is chosen from your OS's preference.
1182 |
1183 | When called in emacs lisp, if @fname is given, open that.
1184 |
1185 | URL `http://ergoemacs.org/emacs/emacs_dired_open_file_in_ext_apps.html'
1186 | Version 2019-11-04"
1187 | (interactive)
1188 | (let* (
1189 | ($file-list
1190 | (if @fname
1191 | (progn (list @fname))
1192 | (if (string-equal major-mode "dired-mode")
1193 | (dired-get-marked-files)
1194 | (list (buffer-file-name)))))
1195 | ($do-it-p (if (<= (length $file-list) 5)
1196 | t
1197 | (y-or-n-p "Open more than 5 files? "))))
1198 | (when $do-it-p
1199 | (cond
1200 | ((string-equal system-type "windows-nt")
1201 | (mapc
1202 | (lambda ($fpath)
1203 | (w32-shell-execute "open" $fpath)) $file-list))
1204 | ((string-equal system-type "darwin")
1205 | (mapc
1206 | (lambda ($fpath)
1207 | (shell-command
1208 | (concat "open " (shell-quote-argument $fpath)))) $file-list))
1209 | ((string-equal system-type "gnu/linux")
1210 | (mapc
1211 | (lambda ($fpath) (let ((process-connection-type nil))
1212 | (start-process "" nil "xdg-open" $fpath))) $file-list))))))
1213 |
1214 | (define-key dired-mode-map (kbd "C-") 'xah-open-in-external-app)
1215 | #+end_src
1216 | * misc
1217 | #+begin_src emacs-lisp
1218 | (setq confirm-kill-processes nil)
1219 |
1220 |
1221 | #+end_src
1222 | * Clojure
1223 | #+BEGIN_SRC emacs-lisp
1224 | (use-package cider
1225 | :ensure t
1226 | :config
1227 | (add-hook 'cider-repl-mode-hook #'company-mode)
1228 | (add-hook 'cider-mode-hook #'company-mode)
1229 | (add-hook 'cider-mode-hook #'eldoc-mode)
1230 | ;; (add-hook 'cider-mode-hook #'cider-hydra-mode)
1231 | (setq cider-repl-use-pretty-printing t)
1232 | (setq cider-repl-display-help-banner nil)
1233 | ;; (setq cider-cljs-lein-repl "(do (use 'figwheel-sidecar.repl-api) (start-figwheel!) (cljs-repl))")
1234 |
1235 | :bind (("M-r" . cider-namespace-refresh)
1236 | ("C-c r" . cider-repl-reset)
1237 | ("C-c ." . cider-reset-test-run-tests))
1238 | )
1239 |
1240 | (defun my-clojure-mode-hook ()
1241 | (clj-refactor-mode 1)
1242 | (yas-minor-mode 1) ; for adding require/use/import statements
1243 | ;; This choice of keybinding leaves cider-macroexpand-1 unbound
1244 | (cljr-add-keybindings-with-prefix "C-c C-m"))
1245 | (use-package clj-refactor
1246 | :ensure t
1247 | :config
1248 | (add-hook 'clojure-mode-hook #'my-clojure-mode-hook))
1249 |
1250 | #+END_SRC
1251 | * Python
1252 | #+begin_src emacs-lisp
1253 | ;; set the python interpeter
1254 | (setq python-shell-interpreter "python3")
1255 |
1256 |
1257 | #+end_src
1258 | * lsp
1259 | #+begin_src emacs-lisp :tangle no
1260 | ;; set prefix for lsp-command-keymap (few alternatives - "s-l", "C-l")
1261 | (setq lsp-keymap-prefix "C-c l")
1262 | (setq company-clang-executable "/usr/bin/clangd-10")
1263 | (setq lsp-clients-clangd-executable "/usr/bin/clangd-10")
1264 |
1265 |
1266 |
1267 | (use-package lsp-mode
1268 | :ensure t
1269 | :commands lsp
1270 | :hook ((c-mode c++-mode python-mode) . lsp)
1271 | )
1272 |
1273 | (use-package lsp-treemacs :ensure t)
1274 | (add-hook 'c-mode-hook 'lsp)
1275 | (add-hook 'c++-mode-hook 'lsp)
1276 | (add-hook 'cpp-mode-hook 'lsp)
1277 | (setq lsp-enabled-clients '(jedi clangd))
1278 | (use-package lsp-ui
1279 | :ensure t
1280 | :hook (lsp-mode . lsp-ui-mode)
1281 | :config
1282 | (setq lsp-ui-sideline-enable t)
1283 | (setq lsp-ui-sideline-show-hover nil)
1284 | (setq lsp-ui-doc-position 'bottom)
1285 | ;; lsp config stuff
1286 | (setq lsp-enable-links nil)
1287 | (setq lsp-signature-render-documentation nil)
1288 | (setq lsp-headerline-breadcrumb-enable nil)
1289 | (setq lsp-ui-doc-enable nil)
1290 | (setq lsp-completion-enable-additional-text-edit nil)
1291 | (setq web-mode-enable-current-element-highlight t)
1292 | (lsp-ui-doc-show))
1293 |
1294 |
1295 | (use-package lsp-jedi
1296 | :ensure t
1297 | :config
1298 | (with-eval-after-load "lsp-mode"
1299 | (add-to-list 'lsp-disabled-clients 'pyls)
1300 | (add-to-list 'lsp-enabled-clients 'jedi)))
1301 |
1302 | (setq lsp-ui-doc-show-with-cursor nil)
1303 |
1304 | ;; (use-package dap-mode
1305 | ;; :ensure t
1306 | ;; :hook (lsp-mode . dap-mode)
1307 | ;; :config
1308 | ;; (dap-ui-mode 1)
1309 | ;; (dap-tooltip-mode 1)
1310 | ;; (require 'dap-node)
1311 | ;; (dap-node-setup))
1312 |
1313 | ;; (dap-auto-configure-mode)
1314 | ;; (require 'dap-gdb-lldb)
1315 | ;; (require 'dap-cpptools)
1316 | ;; https://emacs-lsp.github.io/lsp-mode/tutorials/how-to-turn-off/
1317 |
1318 |
1319 | #+end_src
1320 | * eglot - C++, Python, Java :tangle no
1321 | #+begin_src emacs-lisp
1322 |
1323 | (use-package eglot :ensure t)
1324 | (add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd-10"))
1325 | (add-hook 'c-mode-hook 'eglot-ensure)
1326 | (add-hook 'c++-mode-hook 'eglot-ensure)
1327 |
1328 | (add-hook 'python-mode-hook 'eglot-ensure)
1329 |
1330 |
1331 | (defconst my-eclipse-jdt-home "/home/zamansky/.emacs.d/.cache/lsp/eclipse.jdt.ls/plugins/org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar")
1332 | (defun my-eglot-eclipse-jdt-contact (interactive)
1333 | "Contact with the jdt server input INTERACTIVE."
1334 | (let ((cp (getenv "CLASSPATH")))
1335 | (setenv "CLASSPATH" (concat cp ":" my-eclipse-jdt-home))
1336 | (unwind-protect (eglot--eclipse-jdt-contact nil)
1337 | (setenv "CLASSPATH" cp))))
1338 | (setcdr (assq 'java-mode eglot-server-programs) #'my-eglot-eclipse-jdt-contact)
1339 |
1340 |
1341 | (add-hook 'java-mode-hook 'eglot-ensure)
1342 |
1343 | #+end_src
1344 | * Load other files
1345 | #+BEGIN_SRC emacs-lisp
1346 |
1347 | (load-if-exists "~/Sync/shared/mu4econfig.el")
1348 | (load-if-exists "~/Sync/shared/not-for-github.el")
1349 |
1350 | #+END_SRC
1351 |
1352 |
1353 | * Temp testing stuff
1354 | #+begin_src emacs-lisp
1355 | ;;(set-frame-font "Inconsolata-18")
1356 | (set-frame-font "Firacode-18")
1357 | #+end_src
1358 |
--------------------------------------------------------------------------------