more emacs configs
This commit is contained in:
parent
4f592c0559
commit
6c8fc1c340
1 changed files with 201 additions and 28 deletions
229
guix/init.el
229
guix/init.el
|
|
@ -4,7 +4,7 @@
|
||||||
(tool-bar-mode -1)
|
(tool-bar-mode -1)
|
||||||
(scroll-bar-mode -1)
|
(scroll-bar-mode -1)
|
||||||
|
|
||||||
(load-theme 'tango-dark t)
|
|
||||||
(recentf-mode 1)
|
(recentf-mode 1)
|
||||||
(savehist-mode 1) ; remember previous commands in minibuffer
|
(savehist-mode 1) ; remember previous commands in minibuffer
|
||||||
(save-place-mode 1) ; put cursor in last place when opening a file
|
(save-place-mode 1) ; put cursor in last place when opening a file
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
;; Update files when changed on disk
|
;; Update files when changed on disk
|
||||||
(global-auto-revert-mode 1)
|
(global-auto-revert-mode 1)
|
||||||
|
|
||||||
(set-frame-font "DejaVu Sans Mono 12")
|
(set-frame-font "DejaVu Sans Mono 14")
|
||||||
|
|
||||||
;; Initialize Package Sources
|
;; Initialize Package Sources
|
||||||
(require 'package)
|
(require 'package)
|
||||||
|
|
@ -86,32 +86,6 @@
|
||||||
;; (setq read-extended-command-predicate
|
;; (setq read-extended-command-predicate
|
||||||
;; #'command-completion-default-include-p)
|
;; #'command-completion-default-include-p)
|
||||||
|
|
||||||
;; Enable recursive minibuffers
|
|
||||||
(setq enable-recursive-minibuffers t))
|
|
||||||
;; A few more useful configurations...
|
|
||||||
(use-package emacs
|
|
||||||
:init
|
|
||||||
;; Add prompt indicator to `completing-read-multiple'.
|
|
||||||
;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma.
|
|
||||||
(defun crm-indicator (args)
|
|
||||||
(cons (format "[CRM%s] %s"
|
|
||||||
(replace-regexp-in-string
|
|
||||||
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
|
|
||||||
crm-separator)
|
|
||||||
(car args))
|
|
||||||
(cdr args)))
|
|
||||||
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
|
|
||||||
|
|
||||||
;; Do not allow the cursor in the minibuffer prompt
|
|
||||||
(setq minibuffer-prompt-properties
|
|
||||||
'(read-only t cursor-intangible t face minibuffer-prompt))
|
|
||||||
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
|
|
||||||
|
|
||||||
;; Emacs 28: Hide commands in M-x which do not work in the current mode.
|
|
||||||
;; Vertico commands are hidden in normal buffers.
|
|
||||||
;; (setq read-extended-command-predicate
|
|
||||||
;; #'command-completion-default-include-p)
|
|
||||||
|
|
||||||
;; Enable recursive minibuffers
|
;; Enable recursive minibuffers
|
||||||
(setq enable-recursive-minibuffers t))
|
(setq enable-recursive-minibuffers t))
|
||||||
|
|
||||||
|
|
@ -154,6 +128,7 @@
|
||||||
:hook (after-init . simple-modeline-mode))
|
:hook (after-init . simple-modeline-mode))
|
||||||
|
|
||||||
(use-package base16-theme)
|
(use-package base16-theme)
|
||||||
|
(load-theme 'base16-oceanicnext t)
|
||||||
|
|
||||||
(global-display-line-numbers-mode t)
|
(global-display-line-numbers-mode t)
|
||||||
(dolist (mode
|
(dolist (mode
|
||||||
|
|
@ -190,3 +165,201 @@
|
||||||
;; By default, C-h F is bound to `Info-goto-emacs-command-node'. Helpful
|
;; By default, C-h F is bound to `Info-goto-emacs-command-node'. Helpful
|
||||||
;; already links to the manual, if a function is referenced there.
|
;; already links to the manual, if a function is referenced there.
|
||||||
(global-set-key (kbd "C-h F") #'helpful-function)
|
(global-set-key (kbd "C-h F") #'helpful-function)
|
||||||
|
|
||||||
|
(defconst IS-MAC (eq system-type 'darwin))
|
||||||
|
|
||||||
|
(when IS-MAC
|
||||||
|
;; mac specific settings
|
||||||
|
)
|
||||||
|
|
||||||
|
;; General Emacs keybindings
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-x" "Ctrl-X-prefix"
|
||||||
|
"C-c" "Ctrl-C-prefix"
|
||||||
|
"C-h" "Help"
|
||||||
|
"M-x" "M-x-commands"
|
||||||
|
"C-x r" "Rectangles/Registers"
|
||||||
|
"C-x 4" "Other-window"
|
||||||
|
"C-x 5" "Frames"
|
||||||
|
"C-x 8" "Unicode"
|
||||||
|
"C-x @" "Event-modifiers"
|
||||||
|
"C-x a" "Abbreviations"
|
||||||
|
"C-x n" "Narrowing"
|
||||||
|
"C-x g" "Magit-status"
|
||||||
|
"C-c M-g" "Magit-file-dispatch"
|
||||||
|
"C-x v" "Version-Control"
|
||||||
|
"C-x X" "Font/Encoding"
|
||||||
|
"C-x p" "Project/Buffer"
|
||||||
|
"C-x t" "Tabs/Terminal"
|
||||||
|
"C-x w" "Windows/Workspaces"
|
||||||
|
"C-x x" "Text/Rectangle"
|
||||||
|
"C-x C-a" "Emacs-Lisp-Debug"
|
||||||
|
"C-x RET" "Coding-system")
|
||||||
|
|
||||||
|
;; Emacs major modes and related prefixes
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-c m" "Major-mode-cmds"
|
||||||
|
"C-c p" "Projectile"
|
||||||
|
"C-c g" "Magit"
|
||||||
|
"C-c l" "Lisp"
|
||||||
|
"C-c @" "HS-minor-mode"
|
||||||
|
"C-c t" "Toggle"
|
||||||
|
"C-c /" "Comment")
|
||||||
|
|
||||||
|
;; Org mode specific bindings
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
"C-c C-x" "Org-mode-C-c-C-x"
|
||||||
|
"C-c C-w" "Org-refile"
|
||||||
|
"C-c [" "Org-agenda")
|
||||||
|
|
||||||
|
|
||||||
|
(defun split-and-follow-horizontally ()
|
||||||
|
(interactive)
|
||||||
|
(split-window-below)
|
||||||
|
(balance-windows)
|
||||||
|
(other-window 1))
|
||||||
|
|
||||||
|
(defun split-and-follow-vertically ()
|
||||||
|
(interactive)
|
||||||
|
(split-window-right)
|
||||||
|
(balance-windows)
|
||||||
|
(other-window 1))
|
||||||
|
|
||||||
|
(global-set-key (kbd "s-c") 'delete-window)
|
||||||
|
(global-set-key (kbd "s-h") 'windmove-left)
|
||||||
|
(global-set-key (kbd "s-j") 'windmove-down)
|
||||||
|
(global-set-key (kbd "s-k") 'windmove-up)
|
||||||
|
(global-set-key (kbd "s-l") 'windmove-right)
|
||||||
|
; (define-key evil-normal-state-map (kbd "s-d") 'kill-this-buffer)
|
||||||
|
; (define-key evil-normal-state-map (kbd "s-n") 'projectile-next-project-buffer)
|
||||||
|
; (define-key evil-normal-state-map (kbd "s-p") 'projectile-previous-project-buffer)
|
||||||
|
; (define-key evil-normal-state-map (kbd "s-J") 'split-and-follow-horizontally)
|
||||||
|
; (define-key evil-normal-state-map (kbd "s-L") 'split-and-follow-vertically)
|
||||||
|
; (define-key evil-normal-state-map (kbd "s-b") 'buffer-menu)
|
||||||
|
; (define-key evil-normal-state-map (kbd "s-x") 'execute-extended-command)
|
||||||
|
(global-set-key (kbd "s-SPC") 'tab-next)
|
||||||
|
|
||||||
|
(use-package magit)
|
||||||
|
(use-package treemacs)
|
||||||
|
(use-package org)
|
||||||
|
(use-package projectile)
|
||||||
|
|
||||||
|
(use-package lsp-mode
|
||||||
|
:commands (lsp lsp-deferred)
|
||||||
|
:init
|
||||||
|
(setq lsp-keymap-prefix "C-c l")
|
||||||
|
:config
|
||||||
|
(lsp-enable-which-key-integration t))
|
||||||
|
|
||||||
|
(use-package lsp-ui)
|
||||||
|
(use-package lsp-treemacs)
|
||||||
|
;; todo
|
||||||
|
|
||||||
|
;; projectile
|
||||||
|
;; deft
|
||||||
|
;; roam
|
||||||
|
;; ivy + fuzzzy +prescient?
|
||||||
|
;; ivy-lsp
|
||||||
|
;; hl-todo
|
||||||
|
;; gitgutter
|
||||||
|
;; perspective
|
||||||
|
;; workspaces?
|
||||||
|
;; paredit
|
||||||
|
;; lispy
|
||||||
|
;; persistent undo
|
||||||
|
;; org : roam2, hugo, pretty, dragndrop, bullet
|
||||||
|
;; dap-mode
|
||||||
|
;; dabbrev-expand or company on c-n c-p
|
||||||
|
;; c-N c-P for expand full line
|
||||||
|
;; yasnippet
|
||||||
|
;; tramp
|
||||||
|
;; flesh out treemacs
|
||||||
|
|
||||||
|
|
||||||
|
;; (setq deft-directory "~/notes/deft"
|
||||||
|
;; deft-extensions '("org" "txt")
|
||||||
|
;; deft-recursive t)
|
||||||
|
|
||||||
|
;; (setq org-roam-directory "~/notes/roam")
|
||||||
|
|
||||||
|
(setq projectile-project-search-path '("~/code/"))
|
||||||
|
|
||||||
|
;; (setq company-minimum-prefix-length 100)
|
||||||
|
;; (map! :i "S-o" #'company-complete)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(setq tab-always-indent 'complete)
|
||||||
|
(setq tab-first-completion 'word)
|
||||||
|
|
||||||
|
(use-package company
|
||||||
|
:ensure t
|
||||||
|
:hook (prog-mode . company-mode)
|
||||||
|
:diminish
|
||||||
|
:bind (:map company-active-map
|
||||||
|
("<tab>" . company-select-next)
|
||||||
|
("TAB" . company-select-next)
|
||||||
|
("<backtab>" . company-select-previous)
|
||||||
|
("<S-tab>" . company-select-previous))
|
||||||
|
(:map lsp-mode-map ; more general mode than this?
|
||||||
|
("<tab>" . company-indent-or-complete-common))
|
||||||
|
:config
|
||||||
|
(global-company-mode 1)
|
||||||
|
:init
|
||||||
|
(setq company-idle-delay nil))
|
||||||
|
|
||||||
|
(use-package rust-mode
|
||||||
|
:ensure t
|
||||||
|
:mode "\\.rs\\'"
|
||||||
|
:config
|
||||||
|
(setq rust-format-on-save t)) ; Automatically format rust files on save
|
||||||
|
|
||||||
|
(use-package cargo
|
||||||
|
:ensure t
|
||||||
|
:hook (rust-mode . cargo-minor-mode))
|
||||||
|
|
||||||
|
(use-package eshell)
|
||||||
|
(use-package vterm)
|
||||||
|
(use-package treemacs-projectile)
|
||||||
|
;(use-package treemacs-nerd-icons
|
||||||
|
; :config
|
||||||
|
; (treemacs-load-theme "nerd-icons"))
|
||||||
|
|
||||||
|
(setq ring-bell-function 'ignore)
|
||||||
|
(setq dired-listing-switches "-al")
|
||||||
|
|
||||||
|
(setq backup-directory-alist `(("." . "~/.config/emacs/backups/")))
|
||||||
|
(setq auto-save-file-name-transforms
|
||||||
|
`((".*" "~/.config/emacs/autosaves/" t)))
|
||||||
|
|
||||||
|
(setq dired-dwim-target t) ; opening 'other window' on a subdir enters 2 window dired mode for copy/paste
|
||||||
|
(use-package dired-single)
|
||||||
|
|
||||||
|
(defun my-dired-init ()
|
||||||
|
"Bunch of stuff to run for dired, either immediately or when it's
|
||||||
|
loaded."
|
||||||
|
;; <add other stuff here>
|
||||||
|
(define-key dired-mode-map [remap dired-find-file]
|
||||||
|
'dired-single-buffer)
|
||||||
|
(define-key dired-mode-map [remap dired-mouse-find-file-other-window]
|
||||||
|
'dired-single-buffer-mouse)
|
||||||
|
(define-key dired-mode-map [remap dired-up-directory]
|
||||||
|
'dired-single-up-directory))
|
||||||
|
|
||||||
|
;; if dired's already loaded, then the keymap will be bound
|
||||||
|
(if (boundp 'dired-mode-map)
|
||||||
|
;; we're good to go; just add our bindings
|
||||||
|
(my-dired-init)
|
||||||
|
;; it's not loaded yet, so add our bindings to the load-hook
|
||||||
|
(add-hook 'dired-load-hook 'my-dired-init))
|
||||||
|
|
||||||
|
(use-package dired-open
|
||||||
|
:config
|
||||||
|
(setq dired-open-extensions '(("png" . "sxiv")
|
||||||
|
("mkv" . "mpv")
|
||||||
|
("avi" . "mpv"))))
|
||||||
|
|
||||||
|
(use-package all-the-icons-dired
|
||||||
|
:hook (dired-mode . all-the-icons-dired-mode))
|
||||||
|
|
||||||
|
(use-package treemacs-all-the-icons)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue