summaryrefslogtreecommitdiff
path: root/emacs.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs.el')
-rw-r--r--emacs.el259
1 files changed, 69 insertions, 190 deletions
diff --git a/emacs.el b/emacs.el
index ff66b68..5351731 100644
--- a/emacs.el
+++ b/emacs.el
@@ -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)