Merge branch 'master' of ssh://git.kube.f2o.io:7722/foosinn/emacs.d

This commit is contained in:
Stefan Schwarz 2020-05-20 21:29:28 +02:00
commit e84127eea8
2 changed files with 131 additions and 35 deletions

1
.gitignore vendored
View file

@ -6,3 +6,4 @@
/.lsp-session-v1 /.lsp-session-v1
/projectile-bookmarks.eld /projectile-bookmarks.eld
/transient/ /transient/
projectile.cache

165
init.el
View file

@ -11,15 +11,15 @@
(setq version-control t ) ; use version control (setq version-control t ) ; use version control
(setq vc-make-backup-files t ) ; make backups file even when in version controlled dir (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 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 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 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 inhibit-startup-screen t ) ; inhibit useless and old-school startup screen
(setq ring-bell-function 'ignore ) ; silent bell when you make a mistake (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-read 'utf-8 ) ; use utf-8 by default
(setq coding-system-for-write 'utf-8 ) (setq coding-system-for-write 'utf-8 )
(setq sentence-end-double-space nil) ; sentence SHOULD end with only a point. (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 (setq initial-scratch-message "Welcome in Emacs") ; print a default message in the empty scratch buffer opened at startup
(setq focus-follows-mouse nil)
;; global keybindings ;; global keybindings
(global-set-key (kbd "C-k") 'previous-line) (global-set-key (kbd "C-k") 'previous-line)
@ -40,9 +40,10 @@
(require 'use-package) (require 'use-package)
;; themes ;; themes
(use-package doom-themes :ensure t (use-package doom-themes :ensure t)
(use-package monokai-theme :ensure t
:config :config
(load-theme 'doom-snazzy t)) (load-theme 'doom-laserwave t))
(use-package all-the-icons :ensure t) (use-package all-the-icons :ensure t)
(use-package doom-modeline :ensure t (use-package doom-modeline :ensure t
:hook (after-init . doom-modeline-mode)) :hook (after-init . doom-modeline-mode))
@ -61,12 +62,11 @@
(global-evil-surround-mode 1) (global-evil-surround-mode 1)
(evil-define-key 'visual evil-surround-mode-map "s" 'evil-surround-region) (evil-define-key 'visual evil-surround-mode-map "s" 'evil-surround-region)
) )
(use-package evil-matchit :ensure t
:config (global-evil-matchit-mode 1))
;; ivy config ;; ivy config
(use-package ivy :ensure t (use-package ivy :ensure t
:bind
(:map ivy-mode-map
("C-'" . ivy-avy))
:config :config
(setq ivy-height 10) (setq ivy-height 10)
(setq ivy-use-virtual-buffers t) (setq ivy-use-virtual-buffers t)
@ -81,11 +81,8 @@
(define-key ivy-minibuffer-map (kbd "C-S-h") help-map) (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 "C-l") 'ivy-alt-done)
(define-key ivy-minibuffer-map (kbd "<escape>") 'minibuffer-keyboard-quit)) (define-key ivy-minibuffer-map (kbd "<escape>") 'minibuffer-keyboard-quit))
(ivy-mode 1)
(use-package ivy-xref :ensure t (use-package ivy-xref :ensure t
:init (if (< emacs-major-version 27) :init (setq xref-show-xrefs-function #'ivy-xref-show-xrefs))
(setq xref-show-xrefs-function #'ivy-xref-show-xrefs)
(setq xref-show-definitions-function #'ivy-xref-show-defs)))
(use-package ivy-rich :ensure t (use-package ivy-rich :ensure t
:config (ivy-rich-mode 1)) :config (ivy-rich-mode 1))
@ -109,15 +106,53 @@
) )
;; langs ;; langs
;; vue
(use-package vue-mode :ensure t
:config
(add-to-list 'auto-mode-alist '("\\.vue\\'" . vue-mode)))
;; js
(use-package js2-mode :ensure t
:config (add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode)))
;; puppet
(use-package puppet-mode :ensure t
:config
(add-to-list 'auto-mode-alist '("\\.pp\\'" . puppet-mode))
(general-define-key
:states '(normal visual insert emacs)
:keymaps 'puppet-mode-map
:prefix "SPC"
:non-normal-prefix "C-SPC"
"ma" 'puppet-align-block
)
)
;; php
(use-package php-mode :ensure t)
;; k8s
(use-package k8s-mode :ensure t)
;; hcl
(use-package hcl-mode :ensure t)
;; rust
(use-package rust-mode :ensure t (use-package rust-mode :ensure t
:config (add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-mode))) :config
(setq rust-format-on-save t)
(add-hook 'rust-mode-hook
(lambda () (setq indent-tabs-mode nil)))
)
(add-hook 'rust-mode-hook
(lambda () (setq indent-tabs-mode nil)))
;; golang
(use-package go-mode :ensure t (use-package go-mode :ensure t
:config (add-to-list 'auto-mode-alist '("\\.go\\'" . go-mode))) :config
(add-to-list 'auto-mode-alist '("\\.go\\'" . go-mode))
)
;; yaml
(use-package yaml-mode :ensure t (use-package yaml-mode :ensure t
:config :config
(add-to-list 'auto-mode-alist '("\\.yaml\\'" . yaml-mode)) (add-to-list 'auto-mode-alist '("\\.yaml\\'" . yaml-mode))
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)) (add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))
) )
;; dockerfile
(use-package dockerfile-mode :ensure t (use-package dockerfile-mode :ensure t
:config (add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode))) :config (add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode)))
(use-package evil-org (use-package evil-org
@ -136,6 +171,17 @@
(use-package hl-todo :ensure t) (use-package hl-todo :ensure t)
(use-package company :ensure t (use-package company :ensure t
;; bazel / starlak
(use-package bazel-mode :ensure t)
;; code-with-fun
(use-package whitespace
:config
(setq whitespace-style '(face empty tabs lines-tail trailing))
(global-whitespace-mode t))
(use-package company
:config :config
(global-company-mode 1) (global-company-mode 1)
(define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-n") 'company-select-next)
@ -148,24 +194,64 @@
company-dabbrev-ignore-case nil company-dabbrev-ignore-case nil
company-dabbrev-downcase nil) company-dabbrev-downcase nil)
) )
(use-package highlight-indentation :ensure t)
;; lsp
(use-package lsp-mode :ensure t (use-package lsp-mode :ensure t
:commands (lsp lsp-deferred) :commands (lsp lsp-deferred)
:hook :hook
(go-mode . lsp-deferred)
(c++-mode . lsp-deferred) (c++-mode . lsp-deferred)
(python-mode . lsp-deferred) (dockerfile-mode . lsp-deferred)
(go-mode . lsp-deferred)
(javascript-mode . lsp-deferred) (javascript-mode . lsp-deferred)
(js-mode . lsp-deferred) (js2-mode . lsp-deferred)
(puppet-mode . lsp-deferred)
(python-mode . lsp-deferred)
(ruby-mode . lsp-deferred)
(rust-mode . lsp-deferred) (rust-mode . lsp-deferred)
(vue-mode . lsp-deferred)
:config :config
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection '("/usr/bin/terraform-lsp" "-enable-log-file"))
:major-modes '(hcl-mode)
:server-id 'terraform-ls))
(lsp-register-client
(make-lsp-client
:new-connection
(lsp-stdio-connection '("bundle"
"exec"
"--keep-file-descriptors"
"/home/stefan/Apps/puppet-editor-services/puppet-languageserver"
"--debug=/tmp/puplsp"
"--stdio"))
:major-modes '(puppet-mode)
:server-id 'puppet-languageserver))
(add-to-list 'lsp-language-id-configuration '(puppet-mode . "puppet-languageserver"))
(lsp-register-client
(make-lsp-client
:new-connection
(lsp-stdio-connection '("/home/stefan/Apps/yaml-language-server/bin/yaml-language-server"
"--stdio"))
:major-modes '(yaml-mode)
:server-id 'yaml-languageserver))
(add-to-list 'lsp-language-id-configuration '(yaml-mode . "yaml-languageserver"))
(setq lsp-auto-configure t (setq lsp-auto-configure t
lsp-prefer-flymake nil lsp-auto-guess-root t
lsp-auto-guess-root nil) lsp-enable-indentation t
lsp-enable-on-type-formatting t
lsp-before-save-edits t
lsp-enable-snippet t
)
(defvar lsp-vetur-validation-template nil)
) )
(use-package flycheck :ensure t (use-package flycheck :ensure t
:init (global-flycheck-mode)) :init (global-flycheck-mode))
(use-package lsp-ui :ensure t (use-package lsp-ui :ensure t
:commands lsp-ui-mode) :commands lsp-ui-mode
:config
(setq lsp-ui-doc-position 'at-point
lsp-ui-doc-use-childframe t)
)
(use-package company-lsp :ensure t (use-package company-lsp :ensure t
:commands company-lsp) :commands company-lsp)
(use-package yasnippet :ensure t (use-package yasnippet :ensure t
@ -193,7 +279,7 @@
(use-package general :ensure t (use-package general :ensure t
:config :config
(menu-bar-mode -1) (menu-bar-mode -1)
(toggle-scroll-bar -1) (toggle-scroll-bar -1)
(tool-bar-mode -1) (tool-bar-mode -1)
(general-define-key (general-define-key
:states '(normal visual insert emacs) :states '(normal visual insert emacs)
@ -205,7 +291,7 @@
"'" '(iterm-focus :which-key "iterm") "'" '(iterm-focus :which-key "iterm")
"?" '(iterm-goto-filedir-or-home :which-key "iterm - goto dir") "?" '(iterm-goto-filedir-or-home :which-key "iterm - goto dir")
"/" 'counsel-ag "/" 'counsel-ag
"TAB" '(switch-to-last-buffer :which-key "prev buffer") "TAB" '(foo/switch-to-last-buffer :which-key "prev buffer")
;; Applications ;; Applications
"a" '(:ignore t :which-key "Applications") "a" '(:ignore t :which-key "Applications")
@ -218,15 +304,15 @@
"bd" 'evil-delete-buffer "bd" 'evil-delete-buffer
"bn" 'next-buffer "bn" 'next-buffer
"bn" 'next-buffer "bn" 'next-buffer
"bs" 'switch-to-scratch-buffer "bs" 'foo/switch-to-scratch-buffer
;; Files ;; Files
"ff" 'counsel-find-file "ff" 'counsel-find-file
"fL" 'counsel-locate "fL" 'counsel-locate
"fr" 'counsel-recentf "fr" 'counsel-recentf
"fR" 'rename-current-buffer-file "fR" 'foo/rename-current-buffer-file
"fD" 'delete-current-buffer-file "fD" 'foo/delete-current-buffer-file
"fc" 'foo-copy-file' "fc" 'foo/copy-file'
;; Git ;; Git
"g" '(:ignore t :which-key "Magit") "g" '(:ignore t :which-key "Magit")
@ -236,12 +322,19 @@
"gS" 'magit-stage-file "gS" 'magit-stage-file
"gU" 'magit-unstage-file "gU" 'magit-unstage-file
;; Jumps
"j" '(:ignore t :which-key "Jump")
"jj" 'avy-goto-char-2
;; Langs ;; Langs
"mf" 'lsp
"mf" 'lsp-format-buffer "mf" 'lsp-format-buffer
"mi" 'lsp-organize-imports
"mgg" 'lsp-find-definition "mgg" 'lsp-find-definition
"mh" 'lsp-describe-thing-at-point "mh" 'lsp-describe-thing-at-point
"mj" 'imenu "mj" 'imenu
"me" 'lsp-ui-flycheck-list "me" 'lsp-ui-flycheck-list
"mn" 'flycheck-next-error
;; Projectile ;; Projectile
"p" '(:ignore t :which-key "Projectile") "p" '(:ignore t :which-key "Projectile")
@ -280,7 +373,7 @@
"w <left>" 'evil-window-left "w <left>" 'evil-window-left
"wL" 'evil-window-move-far-right "wL" 'evil-window-move-far-right
"wl" 'evil-window-right "wl" 'evil-window-right
"wm" 'toggle-maximize-buffer "wm" 'foo/toggle-maximize-buffer
"wo" 'other-frame "wo" 'other-frame
"w <right>" 'evil-window-right "w <right>" 'evil-window-right
"w <S-down>" 'evil-window-move-very-bottom "w <S-down>" 'evil-window-move-very-bottom
@ -303,7 +396,8 @@
)) ))
;; custom functions ;; custom functions
(defun toggle-maximize-buffer () "Maximize buffer."
(defun foo/toggle-maximize-buffer () "Maximize buffer."
(interactive) (interactive)
(save-excursion (save-excursion
(if (and (= 1 (length (window-list))) (if (and (= 1 (length (window-list)))
@ -313,7 +407,7 @@
(window-configuration-to-register ?_) (window-configuration-to-register ?_)
(delete-other-windows))))) (delete-other-windows)))))
(defun switch-to-scratch-buffer (&optional arg) (defun foo/switch-to-scratch-buffer (&optional arg)
"Switch to the `*scratch*' buffer, creating it first if needed. "Switch to the `*scratch*' buffer, creating it first if needed.
if prefix argument ARG is given, switch to it in an other, possibly new window." if prefix argument ARG is given, switch to it in an other, possibly new window."
(interactive "P") (interactive "P")
@ -322,12 +416,12 @@ if prefix argument ARG is given, switch to it in an other, possibly new window."
(switch-to-buffer-other-window (get-buffer-create "*scratch*")) (switch-to-buffer-other-window (get-buffer-create "*scratch*"))
(switch-to-buffer (get-buffer-create "*scratch*"))))) (switch-to-buffer (get-buffer-create "*scratch*")))))
(defun switch-to-last-buffer () (defun foo/switch-to-last-buffer ()
"Switch to the last buffer, allowes quick jumping between the last two." "Switch to the last buffer, allowes quick jumping between the last two."
(interactive) (interactive)
(switch-to-buffer nil)) (switch-to-buffer nil))
(defun delete-current-buffer-file () (defun foo/delete-current-buffer-file ()
"Remove file connected to current buffer and kill buffer." "Remove file connected to current buffer and kill buffer."
(interactive) (interactive)
(let ((filename (buffer-file-name)) (let ((filename (buffer-file-name))
@ -345,7 +439,7 @@ if prefix argument ARG is given, switch to it in an other, possibly new window."
(message "File deleted: '%s'" filename)) (message "File deleted: '%s'" filename))
(message "Canceled: File deletion"))))) (message "Canceled: File deletion")))))
(defun rename-current-buffer-file (&optional arg) (defun foo/rename-current-buffer-file (&optional arg)
"Rename the current buffer and the file it is visiting. "Rename the current buffer and the file it is visiting.
If the buffer isn't visiting a file, ask if it should If the buffer isn't visiting a file, ask if it should
be saved to a file, or just renamed. be saved to a file, or just renamed.
@ -407,7 +501,7 @@ initialized with the current directory instead of filename."
;; ?\a = C-g, ?\e = Esc and C-[ ;; ?\a = C-g, ?\e = Esc and C-[
((memq key '(?\a ?\e)) (keyboard-quit)))))))) ((memq key '(?\a ?\e)) (keyboard-quit))))))))
(defun foo-copy-file () (defun foo/copy-file ()
"Write the file under new name." "Write the file under new name."
(interactive) (interactive)
(call-interactively 'write-file)) (call-interactively 'write-file))
@ -421,16 +515,17 @@ initialized with the current directory instead of filename."
;; If there is more than one, they won't work right. ;; If there is more than one, they won't work right.
'(custom-safe-themes '(custom-safe-themes
(quote (quote
("ab9456aaeab81ba46a815c00930345ada223e1e7c7ab839659b382b52437b9ea" "f8c30fa07ba7e8fe884f22b428dae6724955fa61ad84a658c3b0164ae391fb52" "e838d6375a73fda607820c65eb3ea1f9336be7bd9a5528c9161e10c4aa663b5b" "4ea0aa360264ff861fb0212abe4161b83ad1d8c8b74d8a04bcd1baf0ebdceeae" "427fa665823299f8258d8e27c80a1481edbb8f5463a6fb2665261e9076626710" "614e5089876ea69b515c50b6d7fa0a37eb7ed50fda224623ec49e1c91a0af6a1" "93a0885d5f46d2aeac12bf6be1754faa7d5e28b27926b8aa812840fe7d0b7983" "b0fd04a1b4b614840073a82a53e88fe2abc3d731462d6fde4e541807825af342" "cdb3e7a8864cede434b168c9a060bf853eeb5b3f9f758310d2a2e23be41a24ae" "ef4edbfc3ec509612f3cf82476beddd2aeb3da7bdc3a35726337a0cc838a4ef4" "a16e816774b437acb78beb9916a60ea236cfcd05784227a7d829623f8468c5a2" "8c847a5675ece40017de93045a28ebd9ede7b843469c5dec78988717f943952a" "e3c87e869f94af65d358aa279945a3daf46f8185f1a5756ca1c90759024593dd" "db10381a554231a40b7474eaac28bd58f05067faacce3b25d294bb179a3511a1" "34c99997eaa73d64b1aaa95caca9f0d64229871c200c5254526d0062f8074693" "868abc288f3afe212a70d24de2e156180e97c67ca2e86ba0f2bf9a18c9672f07" default))) ("99ea831ca79a916f1bd789de366b639d09811501e8c092c85b2cb7d697777f93" "e074be1c799b509f52870ee596a5977b519f6d269455b84ed998666cf6fc802a" "ca849ae0c889eb918785cdc75452b1e11a00848a5128a95a23872e0119ccc8f4" "1ca1f43ca32d30b05980e01fa60c107b02240226ac486f41f9b790899f6f6e67" "55257ccc6763185dde2146bcc5aa2b83130cc55042c45daaf5efe3c3137b578f" "5091eadbb87fa0a168a65f2c3e579d1a648d764f12ab9d3ab7bdefca709cd2a5" "5a411e7cb2d7955b28c514cd5b75782c6dd4ba027089fec17a2573405b0fdd5c" "aed6332e9a38b49bb044b994e8be0d57a2f67ff6ca96f5ce8e0130562c4cc233" "2d1fe7c9007a5b76cea4395b0fc664d0c1cfd34bb4f1860300347cdad67fb2f9" "7dc3fe8fadb914563790a3fbe587fd455626442f66da333ea4de2c455feefb98" "37ba833442e0c5155a46df21446cadbe623440ccb6bbd61382eb869a2b9e9bf9" "09cadcc2784baa744c6a7c5ebf2a30df59c275414768b0719b800cabd8d1b842" "427fa665823299f8258d8e27c80a1481edbb8f5463a6fb2665261e9076626710" "614e5089876ea69b515c50b6d7fa0a37eb7ed50fda224623ec49e1c91a0af6a1" "93a0885d5f46d2aeac12bf6be1754faa7d5e28b27926b8aa812840fe7d0b7983" "b0fd04a1b4b614840073a82a53e88fe2abc3d731462d6fde4e541807825af342" "cdb3e7a8864cede434b168c9a060bf853eeb5b3f9f758310d2a2e23be41a24ae" "ef4edbfc3ec509612f3cf82476beddd2aeb3da7bdc3a35726337a0cc838a4ef4" "a16e816774b437acb78beb9916a60ea236cfcd05784227a7d829623f8468c5a2" "8c847a5675ece40017de93045a28ebd9ede7b843469c5dec78988717f943952a" "e3c87e869f94af65d358aa279945a3daf46f8185f1a5756ca1c90759024593dd" "db10381a554231a40b7474eaac28bd58f05067faacce3b25d294bb179a3511a1" "34c99997eaa73d64b1aaa95caca9f0d64229871c200c5254526d0062f8074693" "868abc288f3afe212a70d24de2e156180e97c67ca2e86ba0f2bf9a18c9672f07" default)))
'(package-selected-packages '(package-selected-packages
(quote (quote
(rainbow-mode smartparens yaml-mode ivy-hydra ivy-rich evy use-package general evil avy)))) (bazel-mode rainbow-mode highlight-indentation k8s-mode darkokai-theme monokai-pro-theme php-mode puppet-mode smartparens yaml-mode ivy-hydra ivy-rich evy use-package general evil avy)))
'(require-final-newline t))
(custom-set-faces (custom-set-faces
;; custom-set-faces was added by Custom. ;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful. ;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance. ;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right. ;; If there is more than one, they won't work right.
) '(lsp-clients-php-server-command (quote ("php /home/stefan/Apps/php-language-server/vendor/bin/psalm-language-server"))))
(provide 'init) (provide 'init)
;;; init.el ends here ;;; init.el ends here