;(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 "") '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") (require 'lsp-ltex) :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) (use-package lsp-ltex :init (setq lsp-ltex-version "15.2.0")) ; make sure you have set this, see below ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 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)) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 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)))) '(lsp-ui-doc-background ((t (:background "#373B41"))))) ;; Local Variables: ;; vc-follow-symlinks: t ;; End: