commit 0ef9222a2893cd708ff444fc1e3e36a8b4702c44 Author: Stefan Schwarz Date: Thu Aug 1 19:31:32 2019 +0200 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5de471 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +/auto-save-list +/backups +/elpa +/recentf +/.cache +/.lsp-session-v1 +/projectile-bookmarks.eld +/transient/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..8e84a08 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Emacs config + +A close to spacemacs emacs config diff --git a/init.el b/init.el new file mode 100644 index 0000000..715e3ef --- /dev/null +++ b/init.el @@ -0,0 +1,276 @@ +;;; 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 "") '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 " '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 " 'evil-window-left + "wL" 'evil-window-move-far-right + "wl" 'evil-window-right + "wm" 'toggle-maximize-buffer + "wo" 'other-frame + "w " 'evil-window-right + "w " 'evil-window-move-very-bottom + "w " 'evil-window-move-far-left + "w-" 'split-window-below + "w/" 'split-window-right + "w " 'evil-window-move-far-right + "ws" 'split-window-below + "wS" 'split-window-below-and-focus + "w " 'evil-window-move-very-top + "w " '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