Compare commits

...

92 Commits

Author SHA1 Message Date
fa9286e318 Fixes tmux RAM icon with later nerd fonts 2023-09-27 18:31:11 +02:00
2d54623cd9 More 2023 C++ environment
Uses clangd as an LSP.
Uses clang-format to format code.

I may enjoy develop in C++ again.
2023-09-27 15:39:40 +02:00
ecfeaaed06 Fixes emacs setup for svelte 2023-09-19 14:55:03 +02:00
5cc3391ba6 Fixes automatic install of deps 2023-09-14 14:44:35 +02:00
30489a44a4 Makes vterm dependencies explicit in .emacs 2023-09-14 11:56:26 +02:00
80a7dea485 Reindent file
for good or for bad. lets see.
2023-09-13 13:30:29 +02:00
a94cd9b513 WIP 2023-09-13 12:54:21 +02:00
db1d04323f disable whitespace mode in magit 2023-09-12 21:34:58 +02:00
f95b1fc88f Adds binding to toggle between relative and absolute line display. 2023-09-12 21:19:25 +02:00
44028c1d41 Changes the theme 2023-09-12 17:38:08 +02:00
f415670298 Modifies theme 2023-09-12 16:59:33 +02:00
8a9fe89d66 adds support for multiple-cursors 2023-09-12 16:23:43 +02:00
92461037ae Sets subword mode globally
I mostly do not use snakecase.
2023-09-12 16:11:51 +02:00
bf9ac61f6c Improves modeline 2023-09-12 16:08:35 +02:00
bdd5aef0d5 Configures a nice modeline 2023-09-12 09:08:15 +02:00
d885fc5309 Back to use package.el 2023-09-11 13:51:46 +02:00
551be1636d Enables prettier only for typescript 2023-09-08 10:06:00 +02:00
3839afd9d2 fixes prettier.el 2023-08-11 12:48:03 +02:00
435ca5ac6c Makes prettier works with prettier 3. 2023-08-11 09:20:55 +02:00
6807b8ed37 Adds support for postcss in web-mode 2023-08-03 10:18:47 +02:00
1656f25c3f Updates fro svelte integration 2023-07-23 15:25:15 +02:00
45fa891213 Adds subword modes 2023-07-13 18:38:03 +02:00
6b4b3948b7 Colorizes output of compilation 2023-07-13 17:59:56 +02:00
5bbc79033d Switches to treemacs-nerd-icons 2023-06-08 11:44:54 +02:00
3fc5ac912f Adds dockerfile support 2023-06-08 11:40:21 +02:00
53d72312ee Adds vterm to emacs 2023-05-17 14:00:47 +02:00
98f6eb6b40 adds subword-mode on go-mode 2023-05-12 18:00:26 +02:00
7bbfc52d1a Uses an emacs compatible prefix 2023-05-11 18:26:00 +02:00
4ccaa82bc5 Uses .dir-locals to set-up angular project 2023-05-11 18:15:44 +02:00
55da4fb131 Add projectile suppot for angular 2023-05-10 18:27:27 +02:00
be9bb069a2 configures treemacs 2023-05-10 11:23:06 +02:00
b4969ba848 Updates font link 2023-05-10 10:14:02 +02:00
b6ec291ebf Updates angular setup 2023-05-07 13:02:12 +02:00
46163ae259 fixes indent for angular project 2023-05-05 18:23:42 +02:00
3304cbc1dc Renames functions 2023-04-26 14:29:07 +02:00
5020adc224 Fixes update script 2023-04-26 14:25:50 +02:00
8957961441 Updates Ubuntu Font to use 2023-04-20 17:16:32 +02:00
3a120dde3c adds treemacs 2023-04-20 17:16:22 +02:00
0460e55c29 Starts lsp-session on demand per project 2023-04-20 10:49:53 +02:00
9f5552560b Try outs pyright 2022-12-08 15:20:09 +01:00
c4d3583fc2 Cleans up variables 2022-12-08 10:36:14 +01:00
4b82506a1a Fixes verbose hinting of script location 2022-12-08 10:17:14 +01:00
c9dbf5452e Fixes back for linux. macOS won't be supported 2022-12-08 10:15:11 +01:00
b541768feb Adds supports for mambaforge 2022-11-30 13:18:38 +01:00
0b8d8a222b Merge branch 'master' of git.tuleu.science:atuleu/home 2022-11-30 13:18:18 +01:00
93fcbe8c45 Fixes venv file 2022-11-30 13:18:05 +01:00
25091c0ddc Merge branch 'master' of git.tuleu.science:atuleu/home 2022-11-30 12:27:24 +01:00
7c3e42202c Fixes for macOS 2022-11-30 12:27:20 +01:00
6284a07ce6 Fixes py-isort hooks 2022-11-28 17:48:25 +01:00
f3046216a2 Updates prompt 2022-11-19 11:33:46 +01:00
a4368379fe Fixes ubuntu mono installation 2022-11-10 14:11:29 +01:00
0a156bd711 Updates one command-liner
Apparently PAM does not like nested scripts.
2022-11-04 10:43:08 +01:00
74f1e8d52e Adds a README 2022-11-04 10:27:39 +01:00
efeb60a362 Adds a symlink to update and make it curlable installable 2022-11-04 10:25:38 +01:00
d50595c1ea Renames install update.sh 2022-11-04 10:11:57 +01:00
2a2bc51953 Makes install script more beautiful and modular 2022-11-04 10:10:55 +01:00
043dcb2cf5 Sets default branch as main 2022-11-03 09:02:52 +01:00
8547b93747 Switches to pylsp
Maybe it heavier, but at least its working. However pyvenv was a PITA.
2022-10-28 17:50:17 +02:00
76b9a837b3 repairs golang mode 2022-10-28 17:26:45 +02:00
cee4734645 Frist attempt to not use elpy 2022-10-28 16:46:30 +02:00
f0aa182818 Adds yaml-mode in .emacs 2022-10-19 09:18:23 +02:00
51554bb912 Adds .clangd to the list of ignored files 2022-10-19 09:17:51 +02:00
40a2a09473 Updates .gitignore 2022-10-14 10:38:23 +02:00
a94c3a60d7 Updates oh-my-fish packages on install 2022-10-05 08:43:25 +02:00
fae687fe31 Adds supportd for lsp-angular 2022-10-05 08:01:25 +02:00
4bc4e435c7 Uses projectile-compile-command instead of legacy <f9> 2022-10-05 08:00:36 +02:00
b3ab5ccdc6 Sets mergetool 2022-10-05 08:00:07 +02:00
3ac6f09fa7 Adds NVM 2022-10-04 10:23:46 +02:00
b3fa91d56a Disables warnings 2022-10-03 16:10:45 +02:00
ead3b5cfb7 Merge remote-tracking branch 'origin/master' 2022-09-30 15:38:19 +02:00
878a5224a3 Attempts to add language tool supports 2022-09-30 15:37:39 +02:00
bd4f9d080c no sideline diagnostics 2022-09-30 15:36:39 +02:00
e7010d9d06 emacs lsp-mode enhancements 2022-09-29 16:54:57 +02:00
f993a9004b Adds which-key
For full lsp unlimited POOOOOWWWAAAAAA
2022-09-29 16:32:38 +02:00
84e40828a5 Updates for graphic emacs 2022-09-28 09:07:04 +02:00
8e283022e6 Makes it better 2022-09-26 17:53:14 +02:00
879c9e64e5 Updates emacs with lsp and other nice features 2022-09-23 12:59:17 +02:00
9fcb8bffa5 Merge remote-tracking branch 'origin/master' 2022-09-22 11:47:00 +02:00
f5d5a7e404 Updates .emacs 2022-09-22 11:43:48 +02:00
241435e577 Fixes Install script for Mono 2022-09-22 11:43:28 +02:00
c281072d47 Adds cuda support 2022-06-29 14:54:11 +02:00
ecd809ddb5 Updates 2022-06-29 10:23:13 +02:00
77b45743be Updated install script 2022-06-14 22:00:50 +02:00
03bbdbc9d1 Updates dconf only if dconf is installed 2022-01-28 17:05:49 +01:00
c3db537236 Adds local executable to path 2022-01-28 17:05:02 +01:00
bad42e3181 Fixes font name in gnome profile 2022-01-21 11:56:10 +01:00
2556fcc74f allways fixing tmux config 2022-01-21 11:47:50 +01:00
645ffb24ca Fixes gnome settings 2022-01-20 12:00:28 +01:00
26d4a706ce Fishes prompt 2022-01-20 11:26:37 +01:00
0e2bc8689a Updates colors theme to be less harmfull 2022-01-20 11:22:18 +01:00
3f6e8f3fbf fixup! Makes a color theme that does not make the eyes bleed 2022-01-19 21:41:13 +01:00
3172859a3d Avoid credential socket in magit 2022-01-19 21:15:28 +01:00
12 changed files with 1013 additions and 468 deletions

View File

@@ -12,13 +12,18 @@ end
set fish_greeting "" set fish_greeting ""
if test -x $HOME/.local/bin
set PATH $PATH $HOME/.local/bin
end
################################################################################ ################################################################################
# exa # exa
################################################################################ ################################################################################
if type -q exa if type -q exa
alias ls="exa --git -g" alias ls="exa --git -g"
set -gx EXA_COLORS "da=36:uu=33:gu=33" set -gx EXA_COLORS "da=35:uu=33:gu=33"
end end
################################################################################ ################################################################################
@@ -28,6 +33,7 @@ end
alias emacs="emacs -nw" alias emacs="emacs -nw"
alias gemacs="/usr/bin/emacs" alias gemacs="/usr/bin/emacs"
set -gx EDITOR "emacs" set -gx EDITOR "emacs"
set -gx LSP_USE_PLISTS "true"
################################################################################ ################################################################################
# Deb maintainer stuff # Deb maintainer stuff
@@ -58,15 +64,17 @@ export MINICOM="-c on"
################################################################################ ################################################################################
# Conda # Anaconda / Conda / Mambaforge
################################################################################ ################################################################################
if test -x $HOME/miniconda3/bin/conda set CONDA_PREFIXES mambaforge miniforge3 miniconda3 anaconda3
# >>> conda initialize >>> for prefix in $CONDA_PREFIXES
# !! Contents within this block are managed by 'conda init' !! if test -x $HOME/$prefix/bin/conda
eval $HOME/miniconda3/bin/conda "shell.fish" "hook" $argv | source eval $HOME/$prefix/bin/conda "shell.fish" "hook" $argv | source
# <<< conda initialize <<< break
end end
end
################################################################################ ################################################################################
# direnv # direnv
@@ -80,6 +88,22 @@ direnv hook fish | source
starship init fish | source starship init fish | source
################################################################################
# CUDA
################################################################################
if test -d /usr/local/cuda
set PATH $PATH /usr/local/cuda/bin
end
################################################################################
# RUST
################################################################################
if test -d $HOME/.cargo/bin
set PATH $PATH $HOME/.cargo/bin
end
################################################################################ ################################################################################
# Colortest # Colortest
################################################################################ ################################################################################

View File

@@ -3,12 +3,12 @@
SETUVAR __fish_initialized:3100 SETUVAR __fish_initialized:3100
SETUVAR fish_color_autosuggestion:969896 SETUVAR fish_color_autosuggestion:969896
SETUVAR fish_color_cancel:\x2dr SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:c397d8 SETUVAR fish_color_command:b294bb
SETUVAR fish_color_comment:e7c547 SETUVAR fish_color_comment:f0c674
SETUVAR fish_color_cwd:green SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:c397d8 SETUVAR fish_color_end:b294bb
SETUVAR fish_color_error:d54e53 SETUVAR fish_color_error:cc6666
SETUVAR fish_color_escape:00a6b2 SETUVAR fish_color_escape:00a6b2
SETUVAR fish_color_history_current:\x2d\x2dbold SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal SETUVAR fish_color_host:normal
@@ -16,9 +16,9 @@ SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
SETUVAR fish_color_normal:normal SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:00a6b2 SETUVAR fish_color_operator:00a6b2
SETUVAR fish_color_param:7aa6da SETUVAR fish_color_param:81a2be
SETUVAR fish_color_quote:b9ca4a SETUVAR fish_color_quote:b5bd68
SETUVAR fish_color_redirection:70c0b1 SETUVAR fish_color_redirection:8abeb7
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red SETUVAR fish_color_status:red
@@ -30,3 +30,4 @@ SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:B3A06D\x1eyellow SETUVAR fish_pager_color_description:B3A06D\x1eyellow
SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr

View File

@@ -3,3 +3,12 @@
email = alexandre.tuleu.2005@polytechnique.org email = alexandre.tuleu.2005@polytechnique.org
[credential] [credential]
helper = cache helper = cache
[merge]
tool = meld
[init]
defaultBranch = main
[filter "lfs"]
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f

View File

@@ -1,3 +1,7 @@
*~ *~
.dir-locals.el .dir-locals.el
.envrc .envrc
.direnv
cover.out
.projectile
.clangd

View File

@@ -1,2 +1,4 @@
package foreign-env
package nvm
theme bobthefish theme bobthefish
theme default theme default

View File

@@ -8,8 +8,8 @@ disabled = true
[character] # The name of the module we are configuring is "character" [character] # The name of the module we are configuring is "character"
success_symbol = "[](#444444)" # The "success_symbol" segment is being set to "➜" with the color "bold green" success_symbol = "[](#444444)" # The "success_symbol" segment is being set to "➜" with the color "bold green"
error_symbol = "[](red)" # The "success_symbol" segment is being set to "➜" with the color "bold green" error_symbol = "[](red)" # The "success_symbol" segment is being set to "➜" with the color "bold green"
[username] [username]
style_user="bold green" style_user="bold green"
@@ -44,12 +44,12 @@ format="[$symbol$version]($style) "
disabled = false disabled = false
map_symbol = true map_symbol = true
style="bg:#444444 red" style="bg:#444444 red"
format = "[](#444444 bg:red)[$symbol $status ](bg:red)" format = "[](#444444 bg:red)[$symbol $status ](bg:red)"
[time] [time]
disabled = false disabled = false
style="bg:#444444 bright-white" style="bg:#444444 bright-white"
format="[◢](#444444)[$time ]($style)" format="[$time ]($style)"
time_format = '%a %b %d %R' time_format = '%a %b %d %R'
[git_branch] [git_branch]
@@ -68,3 +68,7 @@ disabled=false
[git_status] [git_status]
style="bold red" style="bold red"
format='([\[$all_status$ahead_behind\]]($style) )' format='([\[$all_status$ahead_behind\]]($style) )'
# Local Variables:
# vc-follow-symlinks: t
# End:

758
.emacs
View File

@@ -1,5 +1,9 @@
;(toggle-debug-on-error)
(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3") (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")
;;lsp performances
(setq gc-cons-threshold (* 100 1024 1024));; 100MB
(setq read-process-output-max (* 3 1024 1024));; 3MB
(custom-set-variables (custom-set-variables
;; custom-set-variables was added by Custom. ;; custom-set-variables 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.
@@ -7,334 +11,564 @@
;; If there is more than one, they won't work right. ;; If there is more than one, they won't work right.
'(c-basic-offset 4) '(c-basic-offset 4)
'(c-default-style '(c-default-style
(quote '((c++-mode . "tuleu-c++")
((c++-mode . "tuleu-c++")
(java-mode . "java") (java-mode . "java")
(awk-mode . "awk") (awk-mode . "awk")
(other . "gnu")))) (other . "gnu")))
'(company-idle-delay 20.0) '(company-idle-delay 20.0)
'(display-line-numbers-type t) '(compilation-scroll-output 'first-error)
'(custom-safe-themes
'("162201cf5b5899938cfaec99c8cb35a2f1bf0775fc9ccbf5e63130a1ea217213" "e3daa8f18440301f3e54f2093fe15f4fe951986a8628e98dcd781efbec7a46f2" "6622bb651e72d8ebd66454bd86db6c3990324243ff4325c1b6df252aba63b13e" "2f8eadc12bf60b581674a41ddc319a40ed373dd4a7c577933acaff15d2bf7cc6" "f458b92de1f6cf0bdda6bce23433877e94816c3364b821eb4ea9852112f5d7dc" "016f665c0dd5f76f8404124482a0b13a573d17e92ff4eb36a66b409f4d1da410" "13096a9a6e75c7330c1bc500f30a8f4407bd618431c94aeab55c9855731a95e1" "8b148cf8154d34917dfc794b5d0fe65f21e9155977a36a5985f89c09a9669aa0" "bf948e3f55a8cd1f420373410911d0a50be5a04a8886cabe8d8e471ad8fdba8e" "680f62b751481cc5b5b44aeab824e5683cf13792c006aeba1c25ce2d89826426" "631c52620e2953e744f2b56d102eae503017047fb43d65ce028e88ef5846ea3b" default))
'(display-time-24hr-format t)
'(display-time-default-load-average nil)
'(doom-modeline-github t)
'(doom-modeline-indent-info t)
'(doom-modeline-minor-modes t)
'(doom-modeline-total-line-number t)
'(fill-column 80)
'(global-auto-revert-mode t) '(global-auto-revert-mode t)
'(global-display-line-numbers-mode t) '(global-display-line-numbers-mode t)
'(global-subword-mode t)
'(gofmt-command "goimports") '(gofmt-command "goimports")
'(inhibit-startup-screen t) '(inhibit-startup-screen t)
'(magit-revert-buffers (quote silent) t) '(lisp-body-indent 4)
'(org-agenda-files (quote ("~/org/1.TODO.org"))) '(lisp-indent-offset 4)
'(package-archives '(lisp-lambda-list-keyword-alignment t)
(quote '(lisp-lambda-list-keyword-parameter-alignment t)
(("gnu" . "https://elpa.gnu.org/packages/") '(lisp-lambda-list-keyword-parameter-indentation 4)
("melpa" . "https://melpa.org/packages/")))) '(lisp-loop-forms-indentation 4)
'(lisp-loop-keyword-indentation 4)
'(lisp-simple-loop-indentation 4)
'(lisp-tag-body-indentation 4)
'(lisp-tag-indentation 4)
'(org-agenda-files '("~/org/1.TODO.org"))
'(package-enable-at-startup nil) '(package-enable-at-startup nil)
'(package-selected-packages '(package-selected-packages
(quote '(clang-format+ cmake-format xterm-color dockerfile-mode web-mode prettier json-mode py-isort blacken pyvenv yaml-mode lsp-pyright ng2-mode lsp-ltex lsp-treemacs treemacs-nerd-icons treemacs-projectile treemacs lsp-ui lsp-mode which-key flycheck vterm projectile yasnippet-snippets yasnippet aggressive-indent doom-themes company-go zenburn-theme langtool smart-tabs-mode typescript-mode protobuf-mode opencl-mode glsl-mode go-mode markdown-mode srefactor irony cmake-mode company magit use-package))
(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 '(safe-local-variable-values
(quote '((vc-follow-symlinks . t)
((vc-follow-symlinks . t)
(TeX-master . t) (TeX-master . t)
(TeX-parse-self . t)))) (TeX-parse-self . t)))
'(srefactor--getter-prefix "Get") '(system-packages-noconfirm t)
'(srefactor--getter-setter-capitalize-p t)
'(srefactor--setter-prefix "Set")
'(tab-width 4) '(tab-width 4)
'(warning-suppress-log-types '((comp)))
'(whitespace-style '(whitespace-style
(quote '(face trailing tabs lines-tail newline space-before-tab::tab space-before-tab::space space-before-tab tab-mark)))
(face trailing tabs lines-tail newline space-before-tab::tab space-before-tab::space space-before-tab tab-mark))))
(if (display-graphic-p)
(if (fboundp 'tool-bar-mode)
(tool-bar-mode -1))
(if (fboundp 'toggle-scroll-bar) (if (fboundp 'toggle-scroll-bar)
(toggle-scroll-bar -1)) (toggle-scroll-bar -1))
(menu-bar-mode -1) (menu-bar-mode -1)
(if (fboundp 'tool-bar-mode) (if (fboundp 'tool-bar-mode)
(tool-bar-mode -1)) (tool-bar-mode -1))
)
(add-to-list 'default-frame-alist '(fullscreen . maximized)) (add-to-list 'default-frame-alist '(fullscreen . maximized))
(add-hook 'before-save-hook 'delete-trailing-whitespace) (add-hook 'before-save-hook 'delete-trailing-whitespace)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Use-Package ;; package.el and use-package bootstrap
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize) (package-initialize)
(eval-when-compile
(unless (package-installed-p 'use-package) (unless (package-installed-p 'use-package)
(unless package-archive-contents (unless package-archive-contents
(package-refresh-contents) (package-refresh-contents))
)
(package-install 'use-package) (package-install 'use-package)
) )
(require 'use-package)
)
(require 'use-package)
(require 'use-package-ensure) (require 'use-package-ensure)
(setq use-package-always-ensure t) (setq use-package-always-ensure t)
(require 'use-package)
(use-package use-package-ensure-system-package)
;; required because vterm wants this before loading.
(use-package emacs
:demand t
:ensure-system-package (
(cmake . cmake)
("/usr/include/vterm.h" . libvterm-dev)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Keymap (use-package doom-modeline
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; :init
(global-set-key (kbd "<f9>") 'compile) (doom-modeline-mode 1)
(display-time-mode 1))
(use-package delight
:config
(delight '((eldoc-mode nil "eldoc")
(subword-mode nil "subword")))
)
(use-package multiple-cursors
:bind (("C-c m >" . 'mc/mark-next-like-this)
("C-c m <" . 'mc/mark-previous-like-this)
("C-c m a" . 'mc/mark-all-like-this)
("C-c m e" . 'mc/edit-lines)
)
)
(use-package doom-themes
:config
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t) ; if nil, italics is universally disabled
(load-theme 'doom-spacegrey t)
;; Enable flashing mode-line on errors
(doom-themes-visual-bell-config )
;; or for treemacs users
;;(setq doom-themes-treemacs-theme "doom-atom") ; use "doom-colors" for less minimal icon theme
;;(doom-themes-treemacs-config)
;; Corrects (and improves) org-mode's native fontification.
(doom-themes-org-config)
(defun atu/toggle-display-line-mode ()
"toggle between relative and absolute display-line-mode"
(interactive)
(if (eq display-line-numbers 'relative)
(setq display-line-numbers 'absolute)
(setq display-line-numbers 'relative)
)
)
:init
(setq whitespace-line-column nil)
(global-whitespace-mode 1)
:bind (
("C-c d l" . 'atu/toggle-display-line-mode)
)
)
(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.
)
(use-package xterm-color
:config
(setq compilation-environment '("TERM=xterm-256color"))
(defun atu/advice-compilation-filter (f proc string)
(funcall f proc (xterm-color-filter string)))
(advice-add 'compilation-filter :around #'atu/advice-compilation-filter)
)
(use-package smart-tabs-mode (use-package smart-tabs-mode
:config :config
(setq-default tab-width 4) ; or any other preferred value (setq-default tab-width 4) ; or any other preferred value
(setq cua-auto-tabify-rectangles nil) (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-line c-basic-offset)
(smart-tabs-advice c-indent-region c-basic-offset) (smart-tabs-advice c-indent-region c-basic-offset)
(smart-tabs-add-language-support cmake cmake-mode-hook (smart-tabs-add-language-support cmake cmake-mode-hook
( (
(cmake-indent . cmake-tab-width) (cmake-indent . cmake-tab-width)
) )
) )
(smart-tabs-add-language-support protobuf protobuf-mode-hook (smart-tabs-add-language-support protobuf protobuf-mode-hook
( (
(c-indent-line . c-basic-offset) (c-indent-line . c-basic-offset)
(c-indent-region . 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 (smart-tabs-add-language-support glsl glsl-mode-hook
( (
(c-indent-line . c-basic-offset) (c-indent-line . c-basic-offset)
(c-indent-region . c-basic-offset) (c-indent-region . c-basic-offset)
) )
) )
(smart-tabs-add-language-support opencl opencl-mode-hook (smart-tabs-add-language-support opencl opencl-mode-hook
( (
(c-indent-line . c-basic-offset) (c-indent-line . c-basic-offset)
(c-indent-region . c-basic-offset) (c-indent-region . c-basic-offset)
) )
) )
(smart-tabs-insinuate 'c 'javascript 'c++ 'cmake 'nxml 'protobuf 'html 'glsl)
(smart-tabs-add-language-support elisp emacs-lisp-mode-hook
(
(lisp-indent-line . lisp-indent-offset)
(lisp-indent-region . lisp-indent-offset)
)
) )
(smart-tabs-insinuate 'c 'c++ 'cmake 'nxml 'protobuf 'glsl 'elisp)
)
(use-package aggressive-indent
:hook
(emacs-lisp-mode . aggressive-indent-mode)
)
(use-package magit (use-package magit
:commands (magit-status) :commands (magit-status)
:bind ("C-x g" . magit-status) :bind ("C-x g" . magit-status)
:hook
(magit-mode .
(lambda () (setq-local whitespace-style nil)))
:custom
(magit-credential-cache-daemon-socket nil)
) )
(use-package company (use-package company
:delight
:bind ( ("M-TAB" . company-complete) ) :bind ( ("M-TAB" . company-complete) )
:config :config
(global-company-mode t) (global-company-mode t)
) )
(use-package cmake-mode (use-package cmake-mode
:ensure-system-package (
(cmake . cmake)
(pip . python3-pip)
(cmake-format . "pip install --user cmakelang[YAML]")
)
:config :config
(setq cmake-tab-width 4) (setq cmake-tab-width 4)
(defun atu/cmake-format-buffer ()
"Formats the current buffer using cmake-format"
(interactive)
(shell-command-on-region
;; region to execute on
(point-min)
(point-max)
;; command
"cmake-format -"
;; replace
t
;; name of the error bufer
"* cmake-format Error Buffer *"
;;
t))
:hook
(cmake-mode . lsp-deferred)
(cmake-mode . (lambda () (add-hook 'before-save-hook 'atu/cmake-format-buffer nil 'local)))
) )
(use-package company-irony (use-package cc-mode
:after (company irony) :ensure nil
; :config :ensure-system-package
; (add-to-list 'company-backends 'company-irony) (clangd . clangd)
:hook
(c-mode . lsp-deferred)
(c++-mode . lsp-deferred)
) )
(use-package company-irony-c-headers (use-package clang-format+
:after (company irony) :ensure-system-package
; :config (clang-format . clang-format)
; (add-to-list 'company-backends 'company-irony-c-headers) :hook
(c-mode-common . clang-format+-mode)
) )
(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 (use-package yasnippet
:delight yas-minor-mode
:config
(yas-global-mode)
:after (company) :after (company)
:bind ( :map yas-minor-mode-map :bind ( :map yas-minor-mode-map
("TAB" . nil) ("TAB" . nil)
) )
:config
; (add-to-list 'company-backends 'company-yasnippet)
) )
(use-package yasnippet-snippets (use-package yasnippet-snippets
:after (yasnippet) :after (yasnippet)
) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (use-package projectile
;; C/C++ :bind ( :map projectile-mode-map
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ( "C-c p" . 'projectile-command-map)
)
:delight
:config
(projectile-mode +1)
(setq projectile-per-project-compilation-buffer t)
(projectile-register-project-type 'ng2 '("angular.json" "package.json" "tsconfig.json")
:project-file "angular.json"
:compile "npm install"
:test "ng test --progress=false"
:run "ng serve"
:test-suffix ".spec")
)
(defun c-c++-header () (use-package vterm)
"sets either c-mode or c++-mode, whichever is appropriate for
header" (use-package flycheck
(interactive) :delight
(let ((c-file (concat (substring (buffer-file-name) 0 -1) "c"))) :bind (("C-c C-n" . 'flycheck-next-error))
(if (file-exists-p c-file) :config
(c-mode) (defvar-local atu/flycheck-local-cache nil)
(c++-mode)
(defun atu/flycheck-checker-get (fn checker property)
(or (alist-get property (alist-get checker atu/flycheck-local-cache))
(funcall fn checker property)))
(advice-add 'flycheck-checker-get :around 'atu/flycheck-checker-get)
(setq flycheck-indication-mode 'left-margin)
;; Adjust margins and fringe widths…
(defun atu/set-flycheck-margins ()
(setq left-fringe-width 8 right-fringe-width 8
left-margin-width 1 right-margin-width 0)
(flycheck-refresh-fringes-and-margins))
:hook
(flycheck-mode . atu/set-flycheck-margins)
)
(use-package which-key
:delight
:config
(which-key-mode)
(which-key-setup-side-window-right-bottom)
)
(use-package lsp-mode
:delight
:after (flycheck)
:init
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
(setq lsp-keymap-prefix "C-c l")
:bind-keymap ("C-c l" . lsp-command-map)
:config
(yas-minor-mode)
(if (display-graphic-p)
(setq lsp-ui-doc-use-webkit t)
)
(add-to-list 'lsp-language-id-configuration '("\\.postcss\\'" . "css"))
(advice-add 'lsp :before
(lambda (&rest _args)
(eval '(setf (lsp-session-server-id->folders (lsp-session)) (ht)
) )
) )
) )
)
:bind (
("C-c C-d" . lsp-ui-doc-toggle)
)
:hook
(lsp-mode . lsp-enable-which-key-integration)
:commands
(lsp lsp-deferred)
)
(use-package lsp-ui
:commands lsp-ui-mode
:config
(setq lsp-ui-sideline-show-diagnostics nil)
:custom-face
(lsp-ui-doc-background ((t (:background "#373B41"))))
)
(use-package treemacs
:bind (("C-x t t" . treemacs)
("M-0" . treemacs-select-window))
:config
(add-hook 'treemacs-mode-hook (lambda () (display-line-numbers-mode -1)))
(treemacs-project-follow-mode t)
)
(use-package treemacs-projectile)
(use-package nerd-icons )
(use-package treemacs-nerd-icons
:config
(treemacs-load-theme "nerd-icons"))
(use-package lsp-treemacs
:after lsp-mode
)
(use-package lsp-ltex
:init
(setq lsp-ltex-version "15.2.0")) ; make sure you have set this, see below
(use-package ng2-mode
:hook
(typescript-mode . lsp-deferred)
)
(use-package lsp-pyright
:hook
(python-mode . (lambda ()
(require 'lsp-pyright)
(lsp-deferred))) ; or lsp-deferred
)
(use-package yaml-mode)
(use-package python
:custom
(python-shell-interpreter "ipython")
(python-shell-interpreter-args "-i --simple-prompt")
(python-indent-guess-indent-offset-verbose nil)
:hook
(python-mode . (lambda () (setq-local company-prescient-sort-length-enable nil)))
(python-mode . (lambda () (setq-local fill-column 88)))
(python-mode . lsp-deferred)
(python-mode . atu/activate-venv)
(lsp-managed-mode . (lambda ()
(when (derived-mode-p 'python-mode)
(setq atu/flycheck-local-cache '((lsp . ((next-checkers . (python-flake8)))))))))
)
(use-package pyvenv
:after (projectile)
:config
(defun atu/get-direnv-venv ()
"Gets .direnv from project root python venv if any"
(when-let* ((root-dir (projectile-project-root))
(direnv (concat (file-name-as-directory root-dir) ".direnv"))
(direnv-exists (file-directory-p direnv))
(venvs (directory-files direnv t "python-.*")))
(car (last venvs)))
)
(defun atu/get-dotvenv ()
"Gets .venv from project root if any"
(when-let* ((root-dir (projectile-project-root))
(venv-file (concat (file-name-as-directory root-dir) ".venv"))
(venv-exists (file-exists-p venv-file))
(venv-name (with-temp-buffer
(insert-file-contents venv-file)
(nth 0 (split-string (buffer-string))))))
venv-name)
)
(defun atu/get-venv-name ()
"Gets venv name from project root. Support .venv and .direnv structure"
(or (atu/get-dotvenv) (atu/get-direnv-venv))
)
(defun atu/activate-venv ()
"Activate python environment according to the project root"
(when-let ((venv-name (atu/get-venv-name)))
(setenv "WORKON_HOME" venv-name)
(pyvenv-mode)
(pyvenv-workon venv-name)
(pyvenv-activate venv-name)
(message (format "Using python: %s" venv-name))
)
)
(defun atu/get-venv-python ()
"returns python executable from current venv"
(when-let* ((venv-name (atu/get-venv-name))
(python-exec (concat (file-name-as-directory venv-name) "bin/python3"))
(python-exists (file-executable-p python-exec))
)
python-exec)
)
(defun atu/activate-flycheck ()
"Activate flycheck unless its in the venv"
(if-let ((venv-name (atu/get-venv-name)))
(unless (and buffer-file-name (file-in-directory-p buffer-file-name venv-name))
(flycheck-mode))
(flycheck-mode))
)
(defun atu/pyls-set-jedi-environment ()
"Sets the jedi environment according to the discovered venv"
(when-let ((venv-name (atu/get-venv-name)))
(setq lsp-pylsp-plugins-jedi-environment venv-name))
)
(defun atu/append-workspace-extra-paths ()
"Appends needed extra-paths to lsp-jedi workspace if found"
(when-let* ((venv-name (atu/get-venv-name))
(site-packages (file-expand-wildcards (concat (file-name-as-directory venv-name) "lib/python*/site-packages")))
(site-package (car site-packages)))
(setq lsp-jedi-workspace-extra-paths
(vconcat lsp-jedi-workspace-extra-paths (vector site-package))
)
)
)
(defun atu/flycheck-set-python-paths ()
"Sets the rights executable for flycheck"
(when-let ((python-exec (atu/get-venv-python)))
(flycheck-set-checker-executable 'python-flake8 python-exec)
(flycheck-set-checker-executable 'python-pylint python-exec)
(flycheck-set-checker-executable 'python-mypy python-exec)
(flycheck-reset-enabled-checker 'python-flake8)
(flycheck-reset-enabled-checker 'python-pylint)
(flycheck-add-next-checker 'lsp 'python-pylint)
)
)
:hook
(python-mode . atu/pyls-set-jedi-environment)
;(python-mode . atu/activate-flycheck)
;(python-mode . atu/append-workspace-extra-paths)
(lsp-managed-mode . atu/flycheck-set-python-paths)
)
(use-package blacken
:commands blacken-mode blacken-buffer
:hook
(python-mode . blacken-mode)
)
(use-package py-isort
:commands py-isort-buffer
:hook
(python-mode . (lambda ()
(add-hook 'before-save-hook 'py-isort-before-save)))
)
(add-to-list 'auto-mode-alist '("\\.h\\'" . c-c++-header)) (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 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 (use-package go-mode
:after (projectile)
:config :config
(use-package company-go) (unbind-key "C-c C-d" go-mode-map)
(use-package flymake-go) (defun go-compile-command ()
(setq gofmt-command "goimports") "returns a string to compile a go project"
(add-hook 'before-save-hook 'gofmt-before-save) (setq project-makefile (concat (file-name-as-directory (projectile-project-root)) "Makefile"))
(set (make-local-variable 'company-backends) '(company-go)) (if (file-exists-p project-makefile)
(flymake-mode) "make"
(setq compile-command "go build && go test -coverprofile=cover.out && go tool cover -html cover.out -o /tmp/cover.html") "go build && go test && go vet"
:bind (
("C-c C-h" . godef-describe)
("C-c C-j" . godef-jump)
) )
) )
(projectile-update-project-type
'go
:compile 'go-compile-command)
:hook
(go-mode . lsp-deferred)
(go-mode . (lambda ()
(add-hook 'before-save-hook #'lsp-format-buffer t t)
(add-hook 'before-save-hook #'lsp-organize-imports t t)
))
)
(use-package glsl-mode) (use-package glsl-mode)
(use-package opencl-mode) (use-package opencl-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Protobuf
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package protobuf-mode (use-package protobuf-mode
:mode "\\.proto\\'" :mode "\\.proto\\'"
:config :config
@@ -342,94 +576,50 @@ header"
'((c-basic-offset . 4) '((c-basic-offset . 4)
(indent-tabs-mode . t)) (indent-tabs-mode . t))
) )
(c-add-style "my-style" my-protobuf-style t) ;; (c-add-style "my-style" my-protobuf-style t)
) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Typescript
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l
(use-package typescript-mode (use-package typescript-mode
:config (progn :config
(progn
(setq create-lockfiles nil) (setq create-lockfiles nil)
(add-to-list 'compilation-error-regexp-alist '("^Error: \\(.*?\\):\\([0-9]+\\):\\([0-9]+\\)" 1 2 3)) (add-to-list 'compilation-error-regexp-alist '("^Error: \\(.*?\\):\\([0-9]+\\):\\([0-9]+\\)" 1 2 3))
) )
) )
(use-package json-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (use-package prettier
;; Language tool :delight "PR"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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 :config
(setq zenburn-override-colors-alist (setq prettier-mode-sync-config-flag t)
'( :hook
;; ("zenburn-bg-2" . "#000000") (web-mode . prettier-mode)
;; ("zenburn-bg-1" . "#2B2B2B") (typescript-mode . prettier-mode)
("zenburn-bg-1" . "#151515") (js-mode . prettier-mode)
;; ("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 (use-package web-mode
(custom-theme-set-faces :mode "\\.html?\\'" "\\.svelte\\'" "\\.\\(post\\)?css\\'"
'zenburn :interpreter "html" "css" "svelte"
`(whitespace-space ((t (:background ,zenburn-bg :foreground ,zenburn-bg)))) :config
`(whitespace-hspace ((t (:background ,zenburn-bg+1 :foreground ,zenburn-bg+1)))) (setq web-mode-content-types-alist
`(whitespace-tab ((t (:foreground ,zenburn-bg+3)))) '(("css" . "\\.\\(post\\)?css\\'")))
`(whitespace-newline ((t (:foreground ,zenburn-bg+1)))) :hook
`(whitespace-trailing ((t (:background ,zenburn-red)))) (web-mode . lsp-deferred)
`(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)
)
) (use-package dockerfile-mode
(custom-set-faces :hook
;; custom-set-faces was added by Custom. (dockerfile-mode . lsp-deferred)
;; 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: ;; Local Variables:
;; vc-follow-symlinks: t ;; vc-follow-symlinks: t
;; End: ;; End:

View File

@@ -45,31 +45,31 @@ tmux_conf_new_session_prompt=false
# - false (default) # - false (default)
tmux_conf_24b_colour=true tmux_conf_24b_colour=true
th_color_black="#2A2A2A" th_color_black="#282A2E"
th_color_black_light="#424242" th_color_black_light="#373B41"
th_color_red="#E44455" th_color_red="#CC6666"
th_color_red_light="#FF7485" th_color_red_light="#FF9999"
th_color_orange="#F5864F" th_color_orange="#DE935F"
th_color_orange_light="#FFB67F" th_color_orange_light="#FFC38F"
th_color_yellow="#F0C15A" th_color_yellow="#F0C674"
th_color_yellow_light="#FFF18A" th_color_yellow_light="#FFF6A4"
th_color_green="#BAC85B" th_color_green="#B5BD68"
th_color_green_light="#EAF88B" th_color_green_light="#E5ED98"
th_color_cyan="#57C1B2" th_color_cyan="#8ABEB7"
th_color_cyan_light="#87F1E2" th_color_cyan_light="#BAEEE7"
th_color_blue="#69A9D7" th_color_blue="#81A2BE"
th_color_blue_light="#99D9FF" th_color_blue_light="#B1D2EE"
th_color_magenta="#C798D4" th_color_magenta="#B294BB"
th_color_magenta_light="#F7C8FF" th_color_magenta_light="#E2C4EB"
th_color_gray="#969896" th_color_gray="#969896"
th_color_white="#EAEAEA" th_color_white="#C5C8C6"
# default theme # default theme
tmux_conf_theme_colour_1="$th_color_black_light" # dark gray tmux_conf_theme_colour_1="$th_color_black_light" # dark gray
tmux_conf_theme_colour_2="$th_color_black" # gray tmux_conf_theme_colour_2="$th_color_black" # gray
tmux_conf_theme_colour_3="$th_color_gray" # light gray tmux_conf_theme_colour_3="$th_color_gray" # light gray
tmux_conf_theme_colour_4="$th_color_cyan_light" tmux_conf_theme_colour_4="$th_color_cyan"
#command-line #command-line
tmux_conf_theme_colour_5="$th_color_green" tmux_conf_theme_colour_5="$th_color_green"
#status left fg #status left fg
@@ -108,7 +108,7 @@ tmux_conf_theme_focused_pane_bg="$tmux_conf_theme_colour_2"
tmux_conf_theme_pane_border_style=thin tmux_conf_theme_pane_border_style=thin
# pane borders colours: # pane borders colours:
tmux_conf_theme_pane_border="$tmux_conf_theme_colour_2" tmux_conf_theme_pane_border="$th_color_gray"
tmux_conf_theme_pane_active_border="$tmux_conf_theme_colour_4" tmux_conf_theme_pane_active_border="$tmux_conf_theme_colour_4"
# pane indicator colours (when you hit <prefix> + q) # pane indicator colours (when you hit <prefix> + q)
@@ -162,7 +162,7 @@ tmux_conf_theme_window_status_bg="$tmux_conf_theme_colour_1"
tmux_conf_theme_window_status_attr="none" tmux_conf_theme_window_status_attr="none"
tmux_conf_theme_window_status_format="#I #W" tmux_conf_theme_window_status_format="#I #W"
#tmux_conf_theme_window_status_format="#{circled_window_index} #W" #tmux_conf_theme_window_status_format="#{circled_window_index} #W"
#tmux_conf_theme_window_status_format="#I #W#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}" tmux_conf_theme_window_status_format="#I #W#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
# window current status style # window current status style
# - built-in variables are: # - built-in variables are:
@@ -230,7 +230,7 @@ tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see
# - #{username} # - #{username}
# - #{username_ssh} # - #{username_ssh}
tmux_conf_theme_status_left=" ❐ #S " tmux_conf_theme_status_left=" ❐ #S "
tmux_conf_theme_status_right=" #{prefix}#{pairing}#{synchronized} ,#{?battery_status,#{battery_status},}#{?battery_vbar, #{battery_vbar},}#{?battery_percentage, #{battery_percentage}, }#{weather}, #{cpu_fg_color} #{cpu_percentage} #{ram_fg_color} #{ram_percentage}#{?cpu_temp, #{cpu_temp_fg_color}#{cpu_temp_icon}#{cpu_temp},} , %R , %d %b |#{root}" tmux_conf_theme_status_right=" #{prefix}#{pairing}#{synchronized} ,#{?battery_status,#{battery_status},}#{?battery_vbar, #{battery_vbar},}#{?battery_percentage, #{battery_percentage}, } #{weather} #{cpu_fg_color} #{cpu_percentage} #{ram_fg_color}󰍛 #{ram_percentage} #{cpu_temp_fg_color}#{cpu_temp_icon}#{cpu_temp} , %R , %d %b |#{root}"
# status left style # status left style
tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_6,$tmux_conf_theme_colour_7,$tmux_conf_theme_colour_8" tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_6,$tmux_conf_theme_colour_7,$tmux_conf_theme_colour_8"
@@ -341,11 +341,11 @@ tmux_conf_copy_to_os_clipboard=false
#set -g mode-keys vi #set -g mode-keys vi
# replace C-b by C-a instead of using both prefixes # replace C-b by C-a instead of using both prefixes
# set -gu prefix2 set -gu prefix2
# unbind C-a unbind C-a
# unbind C-b unbind C-b
# set -g prefix C-a set -g prefix C-\\
# bind C-a send-prefix bind C-\\ send-prefix
# move status line to top # move status line to top
#set -g status-position top #set -g status-position top
@@ -431,6 +431,10 @@ unbind _
bind | split-window -h bind | split-window -h
set -g status-right-length 10 set -g status-right-length 10
# fixes <prefix> + e for non-vi user
unbind e
bind e new-window -n "~/.tmux.conf.local" "\$EDITOR ~/.tmux.conf.local && tmux source ~/.tmux.conf && tmux display \"~/.tmux.conf sourced\""
# Local Variables: # Local Variables:
# vc-follow-symlinks: t # vc-follow-symlinks: t

24
README.md Normal file
View File

@@ -0,0 +1,24 @@
# Personnal configuration
## Installation
You can install this configuration on a new system using
```bash
curl -sSL https://git.tuleu.science/atuleu/home/raw/branch/master/update.sh | bash && $HOME/.home/update.sh
```
## Keeping it synced
You can then update the configuration with:
```bash
$HOME/.home/update.sh
```
On a GNOME environment you may want to:
```bash
$HOME/.home/update.sh --gnome
```
This will install necessary fonts and makes GNOME terminal actually looks good.

View File

@@ -0,0 +1,15 @@
[:b1dcc9dd-5262-4d8d-a863-c897e6d979b9]
background-color='rgb(40,42,46)'
background-transparency-percent=21
bold-color-same-as-fg=true
custom-command='env TERM=xterm-direct /usr/bin/fish'
font='UbuntuMono Nerd Font Mono 11'
foreground-color='rgb(197,200,198)'
login-shell=false
palette=['rgb(40,42,46)', 'rgb(204,102,102)', 'rgb(181,189,104)', 'rgb(240,198,116)', 'rgb(129,162,190)', 'rgb(178,148,187)', 'rgb(138,190,183)', 'rgb(150,152,150)', 'rgb(55,59,65)', 'rgb(255,153,153)', 'rgb(229,237,152)', 'rgb(255,246,164)', 'rgb(177,210,238)', 'rgb(226,196,235)', 'rgb(186,238,231)', 'rgb(197,200,198)']
use-custom-command=true
use-system-font=false
use-theme-colors=false
use-theme-transparency=true
use-transparent-background=false
visible-name='atuleu'

View File

@@ -1,44 +0,0 @@
#!/bin/bash
set -e
files=".config/fish \
.config/git \
.config/omf \
.config/starship \
.local/share/omf \
.emacs \
.tmux.conf.local"
function this_script_root_dir() {
dirname $(realpath ${BASH_SOURCE[0]})
}
function run() {
echo "$@"
$@
}
function install_home() {
for f in $files
do
run rm -Rf $HOME/$f
dir=$(dirname $f)
if [ ! "$dir" = "." ]
then
run mkdir -p $HOME/$dir
fi
run ln -sf $(this_script_root_dir)/$f $HOME/$f
done
run ln -sf $(this_script_root_dir)/.tmux/.tmux.conf $HOME/.tmux.conf
}
pushd $(this_script_root_dir)
git pull
git submodule init
git submodule update
popd
install_home

312
update.sh Executable file
View File

@@ -0,0 +1,312 @@
#!/bin/bash
set -e
function print_help() {
echo "usage .home/update.sh [-g/--gnome] [-h/--help] [-v/--berbose] [-d/--dry]
Installs and updates shared configuration on a system. Options are:
-h/--help : print this help
--reinstall : force reinstallation
-g/--gnome : system is intended to run in a GNOME environement, and
will setup gnome-terminal accordingly. Do not
activate on headless system.
--font : Installs font for gnome environment (selected if --gnome)
-v/--verbose : prints command before running them
-n/--dry : dry run, do not execute commands. Implies --verbose.
"
}
function exit_error() {
print_help
exit 1
}
GNOME=false
FONT=false
VERBOSE=false
DRY=false
REINSTALL=false
function set_reinstall_on() {
REINSTALL=true
}
function set_gnome_on() {
GNOME=true
FONT=true
}
function set_font_on() {
FONT=true
}
function set_verbose_on() {
VERBOSE=true
}
function set_dry_on() {
DRY=true
VERBOSE=true
}
while getopts "vnhg-:" optchar
do
case "${optchar}" in
-)
case "${OPTARG}" in
reinstall)
set_reinstall_on
;;
gnome)
set_gnome_on
;;
verbose)
set_verbose_on
;;
font)
set_font_on
;;
dry)
set_dry_on
;;
*)
echo "invalid argument --${OPTARG}"
exit_error
;;
esac;;
h)
print_help
exit 0
;;
g)
set_gnome_on
;;
n)
set_dry_on
;;
v)
set_verbose_on
;;
*)
exit_error
;;
esac
done
files=".config/fish \
.config/git \
.config/omf \
.config/starship.toml \
.local/share/omf \
.emacs \
.tmux.conf.local"
function this_script_root_dir() {
dirname $(realpath ${BASH_SOURCE[0]})
}
function run() {
if $VERBOSE
then
echo "[$@]"
fi
if ! $DRY
then
$@
fi
}
function run_git() {
if $VERBOSE
then
echo "[git $@] in $(this_script_root_dir)"
fi
if ! $DRY
then
pushd $(this_script_root_dir) 1>/dev/null
if $VERBOSE
then
git $@
else
git $@ 1>/dev/null
fi
popd 1>/dev/null
fi
}
function load_gnome_terminal_profiles() {
echo "--- Installing GNOME terminal profile"
if which dconf 1>/dev/null
then
run dconf load /org/gnome/terminal/legacy/profiles:/ < $(this_script_root_dir)/gnome-terminal-profiles.dconf
fi
}
function install_fish() {
echo "--- Ensuring fish is current shell"
if ! which fish 1>/dev/null
then
echo "+++ Installing fish"
run sudo apt-get install -y fish
else
echo "+++ Fish is installed"
fi
fish=$(which fish)
current_shell=$(grep $USER /etc/passwd | cut -d ":" -f 7)
if [ $current_shell != $fish ]
then
echo "+++ Changing shell to $fish (you will be prompted for passwd)"
run chsh -s $fish
else
echo "+++ Default shell is $fish"
fi
}
function install_direnv() {
echo "--- Ensuring direnv is installed"
if ! which direnv 1>/dev/null
then
echo "++ Installing direnv"
run sudo apt-get install -y direnv
else
echo "+++ direnv is installed"
fi
}
function install_starship() {
echo "--- Ensuring starship is installed"
if which starship 1>/dev/null
then
echo "+++ Starship is installed"
if ! $REINSTALL
then
return
fi
echo "+++ Reinstalling starship"
fi
echo "+++ Installing starship"
if $VERBOSE
then
echo "[curl -sS https://starship.rs/install.sh | sh -s -- --yes]"
fi
if ! $DRY
then
curl -sS https://starship.rs/install.sh | sh -s -- --yes
fi
}
function install_ubuntu_mono_nerd() {
echo "--- Ensuring Ubuntu Mono Nerd font is present"
if [ ! -e /usr/share/terminfo/x/xterm-direct ]
then
run sudo apt-get install -y ncurses-term
else
echo "+++ xterm-direct is in terminfo database"
fi
if fc-list | grep "UbuntuMono Nerd Font" 1>/dev/null
then
echo "+++ UbuntuMono Nerd font is installed"
if ! $REINSTALL
then
return
fi
echo "+++ Reinstalling UbuntuMono Nerd font"
fi
echo "+++ Fetching UbuntuMono Nerd Font"
run mkdir -p ~/.local/share/fonts
pushd ~/.local/share/fonts
run curl -fL -o UbuntuMonoNerdFontMono-Regular.ttf https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/UbuntuMono/Regular/UbuntuMonoNerdFontMono-Regular.ttf
popd
run fc-cache -f
}
function install_deps() {
install_fish
install_direnv
install_starship
if $FONT
then
install_ubuntu_mono_nerd
fi
}
function install_files() {
echo "--- Ensuring symlinks to git file are present"
for f in $files
do
run rm -Rf $HOME/$f
dir=$(dirname $f)
if [ ! "$dir" = "." ]
then
run mkdir -p $HOME/$dir
fi
run ln -sf $(this_script_root_dir)/$f $HOME/$f
done
run ln -sf $(this_script_root_dir)/.tmux/.tmux.conf $HOME/.tmux.conf
}
function update_oh_my_fish() {
echo "--- Updating Oh My Fish"
FISH=$(which fish)
if $VERBOSE
then
echo "[$FISH -c 'omf install']"
fi
if ! $DRY
then
if $VERBOSE
then
$FISH -c 'omf install'
else
$FISH -c 'omf install' 1>/dev/null
fi
fi
}
function update_home() {
if $VERBOSE
then
echo "--- this_script_root_dir: $(this_script_root_dir)"
fi
update_repos
install_deps
install_files
update_oh_my_fish
if $GNOME
then
load_gnome_terminal_profiles
fi
if ! $DRY
then
echo "--- git.tuleu.science:atuleu/home.git updated and set"
fi
}
function update_repos() {
echo "--- Updating git.tuleu.science:atuleu/home.git"
run_git pull
run_git submodule init
run_git submodule update
}
if [ -z $BASH_SOURCE ] && [ ! -d "$HOME/.home" ]
then
echo "--- cloning git.tuleu.science:atuleu/home.git in $HOME/.home"
pushd $HOME 1>/dev/null
run_git clone https://git.tuleu.science/atuleu/home.git .home
popd 1>/dev/null
else
update_home
fi