Files
home/.emacs
2022-09-22 11:43:48 +02:00

433 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)
'(display-line-numbers-type t)
'(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
'(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
'((vc-follow-symlinks . t)
(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
'(face trailing tabs lines-tail newline space-before-tab::tab space-before-tab::space space-before-tab tab-mark)))
(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 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)
: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.
)
;; Local Variables:
;; vc-follow-symlinks: t
;; End: