;(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 (quote ((c++-mode . "tuleu-c++") (java-mode . "java") (awk-mode . "awk") (other . "gnu")))) '(company-idle-delay 20.0) '(display-line-numbers-type t) '(global-auto-revert-mode t) '(global-display-line-numbers-mode t) '(gofmt-command "goimports") '(inhibit-startup-screen t) '(magit-revert-buffers (quote silent) t) '(org-agenda-files (quote ("~/org/1.TODO.org"))) '(package-archives (quote (("gnu" . "https://elpa.gnu.org/packages/") ("melpa" . "https://melpa.org/packages/")))) '(package-enable-at-startup nil) '(package-selected-packages (quote (zenburn-theme langtool smart-tabs-mode typescript-mode protobuf-mode opencl-mode glsl-mode go-mode elpy markdown-mode yasnippet srefactor irony cmake-mode company magit use-package))) '(safe-local-variable-values (quote ((TeX-master . t) (TeX-parse-self . t)))) '(srefactor--getter-prefix "Get") '(srefactor--getter-setter-capitalize-p t) '(srefactor--setter-prefix "Set") '(tab-width 4) '(whitespace-style (quote (face trailing tabs lines-tail newline space-before-tab::tab space-before-tab::space space-before-tab tab-mark)))) (toggle-scroll-bar -1) (menu-bar-mode -1) (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) ) (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 company-irony :after (company irony) ; :config ; (add-to-list 'company-backends 'company-irony) ) (use-package company-irony-c-headers :after (company irony) ; :config ; (add-to-list 'company-backends 'company-irony-c-headers) ) (use-package irony :config (push 'glsl-mode irony-supported-major-modes) (push 'protobuf-mode irony-supported-major-modes) (push 'opencl-mode irony-supported-major-modes) ) (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 :after (company) :bind ( :map yas-minor-mode-map ("TAB" . nil) ) :config ; (add-to-list 'company-backends 'company-yasnippet) ) (use-package yasnippet-snippets :after (yasnippet) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; C/C++ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c-c++-header () "sets either c-mode or c++-mode, whichever is appropriate for header" (interactive) (let ((c-file (concat (substring (buffer-file-name) 0 -1) "c"))) (if (file-exists-p c-file) (c-mode) (c++-mode) ) ) ) (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 () (global-set-key (kbd "C-c C-h") 'ff-find-other-file) (require 'compile) (global-set-key (kbd "C-x f") 'find-file-at-point) (c-set-offset 'inextern-lang 0) (eval-after-load 'company '(add-to-list 'company-backends '(company-irony company-irony-c-headers company-yasnippet))) (smart-tabs-mode) (irony-mode) (yas-minor-mode-on) (company-irony-setup-begin-commands) (irony-cdb-autosetup-compile-options) ) (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) (setenv "WORKON_HOME" (concat (getenv "HOME") "/miniconda3/envs")) :config (add-hook 'elpy-mode-hook (lambda () (add-hook 'before-save-hook 'elpy-format-code nil t))) ) (use-package go-mode :config (use-package company-go) (use-package flymake-go) (setq gofmt-command "goimports") (add-hook 'before-save-hook 'gofmt-before-save) (set (make-local-variable 'company-backends) '(company-go)) (flymake-mode) (setq compile-command "go build && go test -coverprofile=cover.out && go tool cover -html cover.out -o /tmp/cover.html") :bind ( ("C-c C-h" . godef-describe) ("C-c C-j" . godef-jump) ) ) (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. )