Skip to content

Instantly share code, notes, and snippets.

@mk
Last active December 23, 2022 14:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mk/79192929f9b6f23da168115fedd16847 to your computer and use it in GitHub Desktop.
Save mk/79192929f9b6f23da168115fedd16847 to your computer and use it in GitHub Desktop.
My Emacs Config
;; my customizations on Jack Rusher's excellect emacs config
;; see https://github.com/jackrusher/dotemacs
;; This lives in ~/.emacs/lisp/
;; set initial window size to left half of screen
(custom-set-variables
'(default-frame-alist
(quote
((width . 158)
(height . 100)
(top . 0)
(left . 0)))))
;; use find-file to open files
(global-set-key (kbd "s-o") 'find-file)
;; extra packages
(use-package counsel-projectile :ensure t)
(use-package projectile :ensure t)
(require 'counsel-projectile)
(global-set-key (kbd "s-F") 'counsel-projectile-ag)
;; I never want to print the current buffer.
;; I’d rather get a fuzzy-searchable list of function definitions
(global-set-key (kbd "s-p") 'imenu)
;; Fuzzy-find files in project as you type
(require 'projectile)
(global-set-key (kbd "s-t") 'projectile-find-file)
(projectile-mode +1)
;; Search in project with ag
(require 'counsel-projectile)
(global-set-key (kbd "s-F") 'counsel-projectile-ag)
;; Fuzzy-find files in project as you type
(require 'projectile)
(global-set-key (kbd "s-t") 'projectile-find-file)
(projectile-mode +1)
(setq projectile-indexing-method 'hybrid)
;; moving between open buffers
(global-set-key (kbd "C-s-<left>") 'previous-buffer)
(global-set-key (kbd "C-s-<right>") 'next-buffer)
(global-set-key (kbd "s-d") 'mc/mark-next-like-this)
;; aggressive indent mode for LISPs
(add-hook 'emacs-lisp-mode-hook #'aggressive-indent-mode)
(add-hook 'clojure-mode-hook #'aggressive-indent-mode)
(setq cider-save-file-on-load 't)
;; don't annoy me
(setq magit-save-repository-buffers 'dontask)
(setq cider-prompt-for-symbol nil)
;; Disable pretty lambda and function symbols
(global-prettify-symbols-mode nil)
;; Cursor
(setq-default cursor-type 'bar)
;; Web Mode
(use-package web-mode :ensure t)
(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
(global-set-key (kbd "M-s-.") 'web-mode-element-close)
(setq web-mode-markup-indent-offset 2)
(setq web-mode-css-indent-offset 2)
(setq web-mode-code-indent-offset 2)
(defun shift-region (distance)
(let ((mark (mark)))
(save-excursion
(indent-rigidly (region-beginning) (region-end) distance)
(push-mark mark t t)
;; Tell the command loop not to deactivate the mark
;; for transient mark mode
(setq deactivate-mark nil))))
(defun shift-right ()
(interactive)
(shift-region 2))
(defun shift-left ()
(interactive)
(shift-region -2))
(global-set-key (kbd "s-]") 'shift-right)
(global-set-key (kbd "s-[") 'shift-left)
;; Nextjournal-specific functions
(global-set-key (kbd "C-c C-g") 'magit)
(setq geiser-racket-binary "/Applications/Racket v7.8/bin/racket")
(defun clerk-show ()
(interactive)
(save-buffer)
(let
((filename
(buffer-file-name)))
(when filename
(cider-interactive-eval
(concat "(nextjournal.clerk/show! \"" filename "\")")))))
(define-key clojure-mode-map (kbd "<M-return>") 'clerk-show)
(define-key markdown-mode-map (kbd "<M-return>") 'clerk-show)
;; from https://github.com/corgi-emacs/corgi-packages/blob/449e5120e4743127659643e4b1e89d037c5b9bcf/corgi-clojure/corgi-clojure.el#L119-L132
(defun corgi/around-cider--choose-reusable-repl-buffer (_command _params)
"Redefine cider--choose-reusable-repl-buffer to something more
sensible. If any dead REPL buffers exist when creating a new one
then simply delete them first. Return nil so `cider-create-repl'
creates a new one. Don't unnecessarily bother the user."
(seq-do #'kill-buffer
(seq-filter (lambda (b)
(with-current-buffer b
(and (derived-mode-p 'cider-repl-mode)
(not (process-live-p (get-buffer-process b))))))
(buffer-list)))
nil)
(advice-add #'cider--choose-reusable-repl-buffer :around #'corgi/around-cider--choose-reusable-repl-buffer)
(setq exec-path (append exec-path '("/opt/homebrew/bin")))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment