diff options
author | Johannes Stoelp <johannes.stoelp@gmail.com> | 2025-01-14 21:17:33 +0100 |
---|---|---|
committer | Johannes Stoelp <johannes.stoelp@gmail.com> | 2025-01-14 21:17:33 +0100 |
commit | fbba68f9e1d65c049f6a409d23e7224ea16b7786 (patch) | |
tree | 793f121afa42d1e0f2f8d74a025192264af7340e /emacs.el | |
parent | 6caeef997a5a908f1f07e6e549f888f857990400 (diff) | |
download | dotfiles-fbba68f9e1d65c049f6a409d23e7224ea16b7786.tar.gz dotfiles-fbba68f9e1d65c049f6a409d23e7224ea16b7786.zip |
emacs: fresh start
Diffstat (limited to 'emacs.el')
-rw-r--r-- | emacs.el | 259 |
1 files changed, 69 insertions, 190 deletions
@@ -1,190 +1,69 @@ -;; dotfiles -- emacs.johannst.el -;; author: johannst - -(provide 'johannst) - -;; config -(custom-set-variables - '(font-use-system-font t) - '(indent-tabs-mode nil) - '(inhibit-startup-screen t) - '(tool-bar-mode nil) - '(whitespace-style '(face trailing space-before-tab newline indentation empty space-after-tab tab-mark)) - '(global-whitespace-mode t) - '(backup-directory-alist `(("." . "~/.emacs.saves"))) - '(display-line-numbers 'relative) - ) - -;; global kbd maps -(global-set-key (kbd "C-x C-b") 'ibuffer) -(define-key isearch-mode-map (kbd "M-o") 'isearch-occur) - -;; only y/n prompt (no RET needed) -(defalias 'yes-or-no-p 'y-or-n-p) - -;; fix 'bad request' on package-refresh-contents (should be fixed with emcas 26.3) -(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3") - -;; ELPA & MELPA -(require 'package) -(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) -(add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/") t) -(setq package-enable-at-startup nil) -(package-initialize) - -;; bootstrap use-package -(unless (package-installed-p 'use-package) - (package-refresh-contents) - (package-install 'use-package)) -(eval-when-compile - (require 'use-package)) - -;; theme -(use-package spacemacs-theme - :ensure t - :defer t - :init - (load-theme 'spacemacs-dark t) - ) - -;; evil -(use-package evil - :ensure t - :config - (evil-mode t) - ;; leader key - (defvar leader-map (make-sparse-keymap) - "Keymap for <leader> key.") - (define-key evil-normal-state-map (kbd "SPC") leader-map) - ;; scrolling - (define-key evil-normal-state-map (kbd "C-k") 'evil-scroll-up) - (define-key evil-normal-state-map (kbd "C-j") 'evil-scroll-down) - ) - -;; undo-tree (optional dependency for evil to get vim like undo/redo) -(use-package undo-tree - :ensure t - :config - (global-undo-tree-mode t) - ) - -;; org -(use-package org - :bind - (("\C-cc" . org-capture) - :map org-mode-map - ("M-j" . org-metadown) - ("M-h" . org-metaleft) - ("M-l" . org-metaright) - ("M-k" . org-metaup) - ) - :config - (setq org-directory "~/org") - (setq org-default-notes-file (concat org-directory "/capture.org")) - (setq org-log-done t) - (setq org-confirm-babel-evaluate nil) - (setq org-todo-keywords '((sequence "TODO" "WAIT" "DONE"))) - (setq org-hide-leading-stars t) - ) - -;; helm -;(use-package helm -; :ensure t -; :config -; (define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action) -; (define-key helm-map (kbd "C-z") 'helm-select-action) -; (define-key leader-map "pf" 'helm-projectile-find-file) -; (helm-mode t) -; ) - -;; helm -;(use-package helm-projectile -; :ensure t -; ) - - -;; ivy-xref -(use-package ivy-xref - :ensure t - ) - -;; magit -(use-package magit - :ensure t - ) - -;; lsp -(use-package lsp-mode - :ensure t - :config - (setq lsp-rust-server 'rust-analyzer - lsp-rust-analyzer-server-display-inlay-hints t - lsp-rust-analyzer-display-chaining-hints t - lsp-rust-analyzer-display-parameter-hints t - ) - :hook ( - (c-mode . lsp) - (c++-mode . lsp) - ) - ) - -;; lsp ui -(use-package lsp-ui - :ensure t - :config (setq - lsp-ui-doc-enable nil - lsp-ui-sideline-enable t - ) - ) - -;; company -(use-package company - :ensure t - :config -; (global-company-mode t) - (setq company-idle-delay 0 - company-minimum-prefix-length 1 - company-show-numbers t - company-dabbrev-downcase nil - company-tooltip-align-annotations t - ) - :hook ( - (rust-mode . company-mode) - (c-mode . company-mode) - (c++-mode . (lambda () - (company-mode) - (add-to-list 'company-dabbrev-code-modes 'c++-mode))) - ) - :bind ( - :map company-mode-map - ("<tab>" . company-indent-or-complete-common) - :map company-active-map - ("C-p" . 'company-select-previous-or-abort) - ("C-n" . 'company-select-next-or-abort) - ("<backtab>" . 'company-select-previous-or-abort) - ("<tab>" . 'company-select-next-or-abort) - ) - ) - -;; company-c-headers -(use-package company-c-headers - :ensure t - :requires (company) - :config - (add-to-list 'company-backends 'company-c-headers) - ;; simple heuristic to find latest c++ headers installed on system - (add-to-list 'company-c-headers-path-system (concat "/usr/include/c++/" (car (last (directory-files "/usr/include/c++" nil "^[1-9]"))))) - ) - -;; rust-mode -(use-package rust-mode - :ensure t - :mode ("\\.rs\\'" . rust-mode) - :hook - (rust-mode . lsp) - ) - -;; clang-format -(use-package clang-format - :ensure t - ) +(setq custom-file "~/.emacs.d/emacs-custom.el") +(load-file custom-file) + +;; -- utils --------------------------------------------------------------------- + +(defun install-once (pkg) + (unless (package-installed-p pkg) + (package-install pkg))) + +;; -- emacs --------------------------------------------------------------------- + +;; disable menu bar +(menu-bar-mode 0) +;; disable tool bar +(tool-bar-mode 0) +;; disable scroll bar +(scroll-bar-mode 0) +;; windows focus follow mouse (>0 means sec delay before focus) +(setq mouse-autoselect-window 0) + +;; disable indenting with TABs +(setq-default indent-tabs-mode nil) + +;; line numbers +;(setq display-line-numbers-type 'relative) +;(display-line-numbers-mode 0) + +;; place backup of all files in single directory +(setq backup-directory-alist '(("." . "~/.emacs.d/backup"))) + +;; whitespace style (when whitespace-mode is enabled) +(setq whitespace-style '(face trailing tabs lines tab-mark)) + +;; -- isearch ------------------------------------------------------------------- + +;; show number of matches +(setq isearch-lazy-count t) + +;; -- ansi-color ---------------------------------------------------------------- + +(require 'ansi-color) +(add-hook 'compilation-filter-hook 'ansi-color-compilation-filter) + +;; -- oderless ------------------------------------------------------------------ + +(install-once 'orderless) +(require 'orderless) +(setq completion-styles '(orderless basic) + completion-category-overrides '((file (styles basic partial-completion)))) + +;; -- evil ---------------------------------------------------------------------- + +(install-once 'evil) + +;; need to be set before require-ing evil +(setq evil-undo-system 'undo-redo) + +(require 'evil) +(evil-mode 1) + +(evil-define-key '(normal motion) 'global (kbd "C-k") 'evil-scroll-up) +(evil-define-key '(normal motion) 'global (kbd "C-j") 'evil-scroll-down) + +(evil-define-key 'motion compilation-mode-map "gr" 'recompile) + +;; -- magit --------------------------------------------------------------------- + +(install-once 'magit) +(require 'magit) |