435 lines
13 KiB
Plaintext
435 lines
13 KiB
Plaintext
;(toggle-debug-on-error)
|
|
(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")
|
|
(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.
|
|
'(c-basic-offset 4)
|
|
'(c-default-style
|
|
'((c++-mode . "tuleu-c++")
|
|
(java-mode . "java")
|
|
(awk-mode . "awk")
|
|
(other . "gnu")))
|
|
'(company-idle-delay 20.0)
|
|
'(compilation-scroll-output 'first-error)
|
|
'(elpy-formatter 'black)
|
|
'(elpy-test-runner 'elpy-test-pytest-runner)
|
|
'(global-auto-revert-mode t)
|
|
'(global-display-line-numbers-mode t)
|
|
'(gofmt-command "goimports")
|
|
'(inhibit-startup-screen t)
|
|
'(org-agenda-files '("~/org/1.TODO.org"))
|
|
'(package-archives
|
|
'(("gnu" . "https://elpa.gnu.org/packages/")
|
|
("melpa" . "https://melpa.org/packages/")))
|
|
'(package-enable-at-startup nil)
|
|
'(package-selected-packages
|
|
'(company-go zenburn-theme langtool smart-tabs-mode typescript-mode protobuf-mode opencl-mode glsl-mode go-mode elpy markdown-mode srefactor irony cmake-mode company magit use-package))
|
|
'(safe-local-variable-values
|
|
'((vc-follow-symlinks . t)
|
|
(TeX-master . t)
|
|
(TeX-parse-self . t)))
|
|
'(tab-width 4)
|
|
'(whitespace-style
|
|
'(face trailing tabs lines-tail newline space-before-tab::tab space-before-tab::space space-before-tab tab-mark)))
|
|
|
|
(if (display-graphic-p)
|
|
(progn
|
|
(if (fboundp 'tool-bar-mode)
|
|
(tool-bar-mode -1))
|
|
)
|
|
(progn
|
|
(if (fboundp 'toggle-scroll-bar)
|
|
(toggle-scroll-bar -1))
|
|
(menu-bar-mode -1)
|
|
(if (fboundp 'tool-bar-mode)
|
|
(tool-bar-mode -1))
|
|
)
|
|
)
|
|
(add-to-list 'default-frame-alist '(fullscreen . maximized))
|
|
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Use-Package
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(package-initialize)
|
|
|
|
(unless (package-installed-p 'use-package)
|
|
(unless package-archive-contents
|
|
(package-refresh-contents)
|
|
)
|
|
(package-install 'use-package)
|
|
)
|
|
|
|
(require 'use-package-ensure)
|
|
(setq use-package-always-ensure t)
|
|
|
|
(require 'use-package)
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Keymap
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(global-set-key (kbd "<f9>") 'compile)
|
|
|
|
(use-package smart-tabs-mode
|
|
:config
|
|
(setq-default tab-width 4) ; or any other preferred value
|
|
(setq cua-auto-tabify-rectangles nil)
|
|
;; (defadvice align (around smart-tabs activate)
|
|
;; (let ((indent-tabs-mode nil)) ad-do-it))
|
|
;; (defadvice align (around smart-tabs activate)
|
|
;; (let ((indent-tabs-mode nil)) ad-do-it))
|
|
;; (defadvice align-regexp (around smart-tabs activate)
|
|
;; (let ((indent-tabs-mode nil)) ad-do-it))
|
|
(defadvice indent-relative (around smart-tabs activate)
|
|
(let ((indent-tabs-mode nil)) ad-do-it))
|
|
(defadvice indent-according-to-mode (around smart-tabs activate)
|
|
(let ((indent-tabs-mode indent-tabs-mode))
|
|
(if (memq indent-line-function
|
|
'(indent-relative
|
|
indent-relative-maybe))
|
|
(setq indent-tabs-mode nil))
|
|
ad-do-it))
|
|
(smart-tabs-advice c-indent-line c-basic-offset)
|
|
(smart-tabs-advice c-indent-region c-basic-offset)
|
|
(smart-tabs-add-language-support cmake cmake-mode-hook
|
|
(
|
|
(cmake-indent . cmake-tab-width)
|
|
)
|
|
)
|
|
(smart-tabs-add-language-support protobuf protobuf-mode-hook
|
|
(
|
|
(c-indent-line . c-basic-offset)
|
|
(c-indent-region . c-basic-offset)
|
|
)
|
|
)
|
|
(smart-tabs-add-language-support html html-mode-hook
|
|
(
|
|
(sgml-indent-line . sgml-basic-offset)
|
|
)
|
|
)
|
|
(smart-tabs-add-language-support glsl glsl-mode-hook
|
|
(
|
|
(c-indent-line . c-basic-offset)
|
|
(c-indent-region . c-basic-offset)
|
|
)
|
|
)
|
|
(smart-tabs-add-language-support opencl opencl-mode-hook
|
|
(
|
|
(c-indent-line . c-basic-offset)
|
|
(c-indent-region . c-basic-offset)
|
|
)
|
|
)
|
|
(smart-tabs-insinuate 'c 'javascript 'c++ 'cmake 'nxml 'protobuf 'html 'glsl)
|
|
)
|
|
|
|
|
|
(use-package magit
|
|
:commands (magit-status)
|
|
:bind ("C-x g" . magit-status)
|
|
:custom
|
|
(magit-credential-cache-daemon-socket nil)
|
|
)
|
|
|
|
(use-package company
|
|
:bind ( ("M-TAB" . company-complete) )
|
|
:config
|
|
(global-company-mode t)
|
|
)
|
|
|
|
(use-package cmake-mode
|
|
:config
|
|
(setq cmake-tab-width 4)
|
|
)
|
|
|
|
|
|
(use-package srefactor
|
|
:bind (:map c-mode-map
|
|
("M-RET" . srefactor-refactor-at-point)
|
|
:map c++-mode-map
|
|
("M-RET" . srefactor-refactor-at-point))
|
|
)
|
|
|
|
|
|
(use-package yasnippet
|
|
:config
|
|
(yas-global-mode)
|
|
:after (company)
|
|
:bind ( :map yas-minor-mode-map
|
|
("TAB" . nil)
|
|
)
|
|
)
|
|
|
|
(use-package yasnippet-snippets
|
|
:after (yasnippet)
|
|
)
|
|
|
|
(use-package projectile
|
|
:bind ( :map projectile-mode-map
|
|
( "C-c p" . 'projectile-command-map)
|
|
)
|
|
:config
|
|
(projectile-mode +1)
|
|
)
|
|
|
|
(use-package cpputils-cmake
|
|
:config
|
|
(setq cppcm-write-flymake-makefile nil)
|
|
:bind ( "C-c C-f" . ff-find-other-file)
|
|
)
|
|
|
|
(use-package flycheck)
|
|
|
|
(use-package lsp-mode
|
|
:config
|
|
(yas-minor-mode)
|
|
(global-set-key (kbd "C-c C-n") 'flycheck-next-error)
|
|
(if (display-graphic-p)
|
|
(setq lsp-ui-doc-use-webkit t)
|
|
)
|
|
(custom-set-faces
|
|
'(lsp-ui-doc-background ((t (:background "#373B41")))))
|
|
:bind (
|
|
("C-c C-d" . lsp-ui-doc-toggle)
|
|
)
|
|
|
|
:init
|
|
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
|
|
(setq lsp-keymap-prefix "C-c l")
|
|
:hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode)
|
|
(c++-mode . lsp-deferred)
|
|
(c-mode . lsp-deferred)
|
|
(cmake-mode . lsp-deferred)
|
|
(go-mode . lsp-deferred)
|
|
;; if you want which-key integration
|
|
(lsp-mode . lsp-enable-which-key-integration))
|
|
:commands (lsp lsp-deferred))
|
|
|
|
(use-package lsp-ui)
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; C/C++
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.h\\'" . c-c++-header))
|
|
|
|
(defconst tuleu-cc-style
|
|
'("gnu"
|
|
(c-offsets-alist . ((innamespace . [0])))
|
|
)
|
|
)
|
|
(c-add-style "tuleu-c++" tuleu-cc-style)
|
|
|
|
(defun my-c-common-hook ()
|
|
(smart-tabs-mode)
|
|
(if (derived-mode-p 'c-mode 'c++-mode)
|
|
(cppcm-reload-all)
|
|
)
|
|
)
|
|
(add-hook 'c-mode-common-hook 'my-c-common-hook)
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; TeX/LaTeX
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;; (use-package auctex
|
|
;; :hook (LaTeX-mode TeX-mode)
|
|
;; )
|
|
|
|
;; (use-package auctex-latexmk
|
|
;; :hook (LaTeX-mode TeX-mode)
|
|
;; :bind (
|
|
;; ("C-x f" . find-file-at-point)
|
|
;; :map LaTeX-mode-map
|
|
;; ([remap reftex-citation] . my-latex-insert-cite)
|
|
;; ("M-q" . my-latex-fill-paragraph)
|
|
;; )
|
|
;; :config (
|
|
;; (add-to-list 'TeX-command-list
|
|
;; '("latexmk" "latexmk -pdf -interaction=nonstopmode -shell-escape %s" TeX-run-TeX nil t
|
|
;; :help "Run latexmk on file"))
|
|
;; (setq TeX-command-default "latexmk")
|
|
;; (setq LaTeX-includegraphics-read-file 'LaTeX-includegraphics-read-file-relative)
|
|
;; (setq LaTeX-includegraphics-strip-extension-flag nil)
|
|
;; (add-to-list 'LaTeX-includegraphics-extensions '"tikz")
|
|
;; ;; use Okular as default pdf viewer
|
|
;; (setq TeX-view-program-selection '((output-pdf "Okular PDF Viewer")))
|
|
;; (add-to-list 'TeX-expand-list '("%(dir)" (lambda nil (expand-file-name (TeX-master-directory)))))
|
|
;; (setq TeX-view-program-list
|
|
;; '(("Okular PDF Viewer" "okular --unique %o#src:%n%(dir)./%b")))
|
|
;; ;; (setq auctex-latexmk-inherit-TeX-PDF-mode t)
|
|
;; ;; launch server if not launched
|
|
;; (load "server")
|
|
;; (unless (server-running-p) (server-start))
|
|
;; (setq reftex-plug-into-AUCTeX t)
|
|
|
|
;; (turn-on-reftex)
|
|
;; (setq TeX-parse-self t)
|
|
;; (setq TeX-auto-save t)
|
|
;; (TeX-PDF-mode)
|
|
;; (setq reftex-ref-macro-prompt nil)
|
|
;; (defun my-latex-insert-cite (&optional P)
|
|
;; ""
|
|
;; (interactive "P")
|
|
;; (TeX-insert-macro "cite")
|
|
;; )
|
|
;; (setq-default TeX-master nil)
|
|
;; (defun my-latex-fill-paragraph (&optional P)
|
|
;; "When called with prefix argument call `fill-paragraph'.
|
|
;; Otherwise split the current paragraph into one sentence per line."
|
|
;; (interactive "P")
|
|
;; (if (not P)
|
|
;; (save-excursion
|
|
;; (let ((fill-column 12345678)) ;; relies on dynamic binding
|
|
;; (fill-paragraph) ;; this will not work correctly if the paragraph is
|
|
;; ;; longer than 12345678 characters (in which case the
|
|
;; ;; file must be at least 12MB long. This is unlikely.)
|
|
;; (let ((end (save-excursion
|
|
;; (forward-paragraph 1)
|
|
;; (backward-sentence)
|
|
;; (point-marker)))) ;; remember where to stop
|
|
;; (beginning-of-line)
|
|
;; (while (progn (forward-sentence)
|
|
;; (<= (point) (marker-position end)))
|
|
;; (just-one-space) ;; leaves only one space, point is after it
|
|
;; (delete-char -1) ;; delete the space
|
|
;; (insert " %");; insert a %
|
|
;; (newline) ;; and insert a newline
|
|
;; (LaTeX-indent-line) ;; I only use this in combination with late, so this makes sense
|
|
;; ))))
|
|
;; ;; otherwise do ordinary fill paragraph
|
|
;; (fill-paragraph P))
|
|
;; )
|
|
;; )
|
|
;; )
|
|
|
|
|
|
(use-package markdown-mode)
|
|
|
|
(use-package elpy
|
|
:init
|
|
(elpy-enable)
|
|
:config
|
|
(add-hook 'elpy-mode-hook (lambda ()
|
|
(add-hook 'before-save-hook
|
|
'elpy-format-code nil t)))
|
|
)
|
|
|
|
(use-package go-mode
|
|
:config
|
|
(setq gofmt-command "goimports")
|
|
(unbind-key "C-c C-d" go-mode-map)
|
|
(add-hook 'before-save-hook 'gofmt-before-save)
|
|
(setq compile-command "go build && go test -coverprofile=cover.out && go tool cover -html cover.out -o /tmp/cover.html")
|
|
)
|
|
|
|
(use-package glsl-mode)
|
|
(use-package opencl-mode)
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Protobuf
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(use-package protobuf-mode
|
|
:mode "\\.proto\\'"
|
|
:config
|
|
(defconst my-protobuf-style
|
|
'((c-basic-offset . 4)
|
|
(indent-tabs-mode . t))
|
|
)
|
|
;; (c-add-style "my-style" my-protobuf-style t)
|
|
)
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Typescript
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l
|
|
|
|
(use-package typescript-mode
|
|
:config (progn
|
|
(setq create-lockfiles nil)
|
|
(add-to-list 'compilation-error-regexp-alist '("^Error: \\(.*?\\):\\([0-9]+\\):\\([0-9]+\\)" 1 2 3))
|
|
)
|
|
)
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Language tool
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(use-package langtool
|
|
:config (progn
|
|
(setq langtool-language-tool-server-jar "~/.languagetool/languagetool-server.jar")
|
|
(setq langtool-default-language "en-US")
|
|
)
|
|
:bind(
|
|
("C-c l c" . langtool-check)
|
|
("C-c l d" . langtool-check-done)
|
|
("C-c l l" . langtool-switch-default-language)
|
|
("C-c l s" . langtool-show-message-at-point)
|
|
("C-c l b" . langtool-correct-buffer)
|
|
)
|
|
)
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; After Init
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(use-package zenburn-theme
|
|
:config
|
|
(setq zenburn-override-colors-alist
|
|
'(
|
|
;; ("zenburn-bg-2" . "#000000")
|
|
;; ("zenburn-bg-1" . "#2B2B2B")
|
|
("zenburn-bg-1" . "#151515")
|
|
;; ("zenburn-bg-08" . "#303030")
|
|
("zenburn-bg-08" . "#1a1a1a")
|
|
;; ("zenburn-bg-05" . "#383838")
|
|
("zenburn-bg-05" . "#202020")
|
|
;;("zenburn-bg" . "#3F3F3F")
|
|
("zenburn-bg" . "#2b2b2b")
|
|
;; ("zenburn-bg+05" . "#494949")
|
|
("zenburn-bg+05" . "#393939")
|
|
;; ("zenburn-bg+1" . "#4F4F4F")
|
|
("zenburn-bg+1" . "#3F3F3F")
|
|
;; ("zenburn-bg+2" . "#5F5F5F")
|
|
("zenburn-bg+2" . "#4F4F4F")
|
|
;; ("zenburn-bg+3" . "#6F6F6F")
|
|
("zenburn-bg+3" . "#5F5F5F")
|
|
)
|
|
)
|
|
|
|
(load-theme 'zenburn t)
|
|
(zenburn-with-color-variables
|
|
(custom-theme-set-faces
|
|
'zenburn
|
|
`(whitespace-space ((t (:background ,zenburn-bg :foreground ,zenburn-bg))))
|
|
`(whitespace-hspace ((t (:background ,zenburn-bg+1 :foreground ,zenburn-bg+1))))
|
|
`(whitespace-tab ((t (:foreground ,zenburn-bg+3))))
|
|
`(whitespace-newline ((t (:foreground ,zenburn-bg+1))))
|
|
`(whitespace-trailing ((t (:background ,zenburn-red))))
|
|
`(whitespace-line ((t (:background ,zenburn-bg :foreground ,zenburn-magenta))))
|
|
`(whitespace-space-before-tab ((t (:background ,zenburn-orange :foreground ,zenburn-orange))))
|
|
`(whitespace-indentation ((t (:background ,zenburn-bg+1))))
|
|
`(whitespace-empty ((t (:background ,zenburn-bg+1))))
|
|
`(whitespace-space-after-tab ((t (:background ,zenburn-bg+1 :foreground ,zenburn-red))))
|
|
`(font-lock-type-face ((t (:foreground ,zenburn-blue+1))))
|
|
)
|
|
(global-whitespace-mode 1)
|
|
)
|
|
)
|
|
(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.
|
|
'(default ((t (:family "UbuntuMono Nerd Font" :foundry "DAMA" :slant normal :weight normal :height 113 :width normal))))
|
|
)
|
|
;; Local Variables:
|
|
;; vc-follow-symlinks: t
|
|
;; End:
|