emacs.d/init.el
Stefan Schwarz 0ef9222a28 init
2019-08-01 19:31:32 +02:00

276 lines
8.3 KiB
EmacsLisp

;;; init.el --- spacemacs like config
;; foosinn
;;; Commentary:
;; my config
;;; Code:
;; sane defaults
(setq delete-old-versions -1 ) ; delete excess backup versions silently
(setq version-control t ) ; use version control
(setq vc-make-backup-files t ) ; make backups file even when in version controlled dir
(setq backup-directory-alist `(("." . "~/.emacs.d/backups")) ) ; which directory to put backups file
(setq vc-follow-symlinks t ) ; don't ask for confirmation when opening symlinked file
(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" t)) ) ;transform backups file name
(setq inhibit-startup-screen t ) ; inhibit useless and old-school startup screen
(setq ring-bell-function 'ignore ) ; silent bell when you make a mistake
(setq coding-system-for-read 'utf-8 ) ; use utf-8 by default
(setq coding-system-for-write 'utf-8 )
(setq sentence-end-double-space nil) ; sentence SHOULD end with only a point.
(setq default-fill-column 80) ; toggle wrapping text at the 80th character
(setq initial-scratch-message "Welcome in Emacs") ; print a default message in the empty scratch buffer opened at startup
;; package manager
(require 'package)
(setq package-enable-at-startup nil) ; tells emacs not to load any packages before starting up
(setq package-archives '(("org" . "http://orgmode.org/elpa/")
("gnu" . "http://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")))
(package-initialize)
;; use package
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(require 'use-package)
;; themes
(use-package doom-themes :ensure t
:config
(load-theme 'doom-dracula t))
(use-package all-the-icons :ensure t)
(use-package doom-modeline :ensure t
:hook (after-init . doom-modeline-mode))
(set-face-attribute 'default nil
:family "Meslo LG S DZ"
:height 105
:weight 'normal
:width 'normal)
;; evil config
(use-package evil :ensure t
:config (evil-mode 1))
(use-package evil-surround
:ensure t
:config
(global-evil-surround-mode 1)
(evil-define-key 'visual evil-surround-mode-map "s" 'evil-surround-region)
)
;; ivy config
(use-package ivy :ensure t
:config
(ivy-mode 1)
(setq ivy-use-virtual-buffers t)
(setq enable-recursive-minibuffers t)
(setq ivy-re-builders-alist
'((swiper . ivy--regex-plus)
(t . ivy--regex-fuzzy)))
;; better movement
(define-key ivy-minibuffer-map (kbd "C-j") 'ivy-next-line)
(define-key ivy-minibuffer-map (kbd "C-k") 'ivy-previous-line)
(define-key ivy-minibuffer-map (kbd "C-h") (kbd "DEL"))
(define-key ivy-minibuffer-map (kbd "C-S-h") help-map)
(define-key ivy-minibuffer-map (kbd "C-l") 'ivy-alt-done)
(define-key ivy-minibuffer-map (kbd "<escape>") 'minibuffer-keyboard-quit))
(use-package ivy-xref :ensure t
:init (if (< emacs-major-version 27)
(setq xref-show-xrefs-function #'ivy-xref-show-xrefs)
(setq xref-show-definitions-function #'ivy-xref-show-defs)))
;; counsel
(use-package counsel :ensure t
:config (counsel-mode 1))
(use-package counsel-projectile :ensure t)
(use-package swiper :ensure t)
;; projectile
(use-package projectile :ensure t
:config (projectile-mode +1))
;; which key
(use-package which-key :ensure t
:config
(which-key-mode 1)
(which-key-setup-side-window-bottom)
(which-key-setup-minibuffer)
(setq which-key-idle-delay .3)
)
;; langs
(use-package go-mode :ensure t)
;; code-with-fun
(use-package company
:config
(global-company-mode 1)
(setq company-idle-delay 0.2
company-minimum-prefix-length 2
company-require-match nil
company-dabbrev-ignore-case nil
company-dabbrev-downcase nil)
)
(use-package lsp-mode :ensure t
:commands (lsp lsp-deferred)
:hook (go-mode . lsp-deferred)
:config
(setq lsp-auto-configure t
lsp-prefer-flymake nil
lsp-auto-guess-root nil)
)
(use-package flycheck :ensure t
:init (global-flycheck-mode))
(use-package lsp-ui :ensure t
:commands lsp-ui-mode)
(use-package company-lsp :ensure t
:commands company-lsp)
(use-package yasnippet :ensure t
:config (yas-global-mode 1))
(use-package yasnippet-snippets :ensure t)
;; treemacs
(use-package treemacs :ensure t)
(use-package lsp-treemacs :ensure t
:commands lsp-treemacs-errors-list)
(use-package treemacs-evil :ensure t
:after treemacs evil)
(use-package treemacs-evil :ensure t
:after treemacs evil)
(use-package treemacs-evil :ensure t
:after treemacs evil)
;; magit
(use-package evil-magit :ensure t)
(use-package magit :ensure t)
;; general config
(use-package general :ensure t
:config
(menu-bar-mode -1)
(toggle-scroll-bar -1)
(tool-bar-mode -1)
(general-define-key
:states '(normal visual insert emacs)
:prefix "SPC"
:non-normal-prefix "C-SPC"
;; simple command
"'" '(iterm-focus :which-key "iterm")
"?" '(iterm-goto-filedir-or-home :which-key "iterm - goto dir")
"/" 'counsel-ag
"TAB" '(switch-to-other-buffer :which-key "prev buffer")
"SPC" '(avy-goto-word-or-subword-1 :which-key "go to char")
;; Applications
"a" '(:ignore t :which-key "Applications")
"ar" 'ranger
"ad" 'dired
;; Files
"ff" 'counsel-find-file
"fL" 'counsel-locate
;; Git
"g" '(:ignore t :which-key "Magit")
"gfh" 'magit-log-buffer-file
"gm" 'magit-dispatch-popup
"gs" 'magit-status
"gS" 'magit-stage-file
"gU" 'magit-unstage-file
;; Langs
"mf" 'lsp-format-buffer
"mgg" 'lsp-find-definition
"mh" 'lsp-describe-thing-at-point
"mj" 'imenu
;; Projectile
"p" '(:ignore t :which-key "Projectile")
"p SPC" 'counsel-projectile
"pb" 'counsel-projectile-switch-to-buffer
"pd" 'counsel-projectile-find-dir
"pp" 'counsel-projectile-switch-project
"pf" 'counsel-projectile-find-file
"pr" 'projectile-recentf
;; Swyper
"s" '(:ignore t :which-key "Swyper")
"ss" 'swiper
"sb" 'swiper-all
;; Treemacs
"ft" 'treemacs
"fB" 'treemacs-bookmark
"fT" 'treemacs-find-file
"f M-t" 'treemacs-find-tag
;; Window
"w" '(:ignore t :which-key "Window")
"w=" 'balance-windows-area
"wd" 'evil-window-delete
"w <down>" 'evil-window-down
"wf" 'follow-mode
"wF" 'make-frame
"wh" 'evil-window-left
"wH" 'evil-window-move-far-left
"wj" 'evil-window-down
"wJ" 'evil-window-move-very-bottom
"wK" 'evil-window-move-very-top
"wk" 'evil-window-up
"w <left>" 'evil-window-left
"wL" 'evil-window-move-far-right
"wl" 'evil-window-right
"wm" 'toggle-maximize-buffer
"wo" 'other-frame
"w <right>" 'evil-window-right
"w <S-down>" 'evil-window-move-very-bottom
"w <S-left>" 'evil-window-move-far-left
"w-" 'split-window-below
"w/" 'split-window-right
"w <S-right>" 'evil-window-move-far-right
"ws" 'split-window-below
"wS" 'split-window-below-and-focus
"w <S-up>" 'evil-window-move-very-top
"w <up>" 'evil-window-up
"wU" 'winner-redo
"wu" 'winner-undo
"wv" 'split-window-right
"wV" 'split-window-right-and-focus
"ww" 'other-window
"wx" 'kill-buffer-and-window
))
;; custom functions
(defun toggle-maximize-buffer () "Maximize buffer."
(interactive)
(save-excursion
(if (and (= 1 (length (window-list)))
(assoc ?_ register-alist))
(jump-to-register ?_)
(progn
(window-configuration-to-register ?_)
(delete-other-windows)))))
;; other
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(package-selected-packages (quote (evy use-package general evil avy))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(provide 'init)
;;; init.el ends here