45 Commits
main ... wsl2

Author SHA1 Message Date
Fabio Scotto di Santolo
2646ae89cb Fix Zoxide configuration for Arch 2026-01-15 20:38:06 +01:00
Fabio Scotto di Santolo
e16bc7fb46 Clean shell configuration on Arch 2026-01-15 20:37:28 +01:00
Fabio Scotto di Santolo
a6ca6f2957 Disable treesitter configuration to Emacs 2026-01-13 14:37:05 +01:00
Fabio Scotto di Santolo
9d25d8cb3c Increase Emacs font size 2026-01-13 14:37:05 +01:00
Fabio Scotto di Santolo
e6b273f8a2 Change bat theme 2026-01-13 14:37:05 +01:00
Fabio Scotto di Santolo
a5e98eefe6 Fix starship 2026-01-13 14:37:05 +01:00
Fabio Scotto di Santolo
1facde8418 Change Emacs UI theme and font 2026-01-07 10:10:13 +01:00
Fabio Scotto di Santolo
65463fcfe3 Fix mu4e email sync 2026-01-07 10:10:13 +01:00
Fabio Scotto di Santolo
e9623a96b0 Fix Projectile paths 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
75b43f669d Added dircolors file 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
64592c7af5 Change Emacs theme 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
596f28512d Fix Bash configuration 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
a4b8af382a Added Orderless completion Emacs 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
83212ea9f2 Added Emacs dashboard 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
16ab7006c6 Configuring Org Mode on Emacs 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
07795b9f04 Added Emacs modes for JSON and Markdown 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
07dfd8687a Added snippets for Emacs 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
f81fb6d3fe Added YAML and Dockerfile treesitter grammar 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
d2a3fa082e Compact Emacs C-lang configuration 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
e0487c8e2e Organize Emacs configuration 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
fa1928af8d Fix keybindings module 2026-01-07 09:31:19 +01:00
Fabio Scotto di Santolo
049c76c04a Added declarative abstraction for loading module 2026-01-07 09:31:17 +01:00
Fabio Scotto di Santolo
c375986e05 Split Emacs configuration in modules 2026-01-07 09:30:10 +01:00
Fabio Scotto di Santolo
a18be1d18c Intellij debug layout 2026-01-07 09:25:07 +01:00
Fabio Scotto di Santolo
5045102b6b Fix Bash configuration 2025-12-18 12:15:36 +01:00
Fabio Scotto di Santolo
9b0bdd7fc6 Configure DAP for C/C++ 2025-12-17 11:11:58 +01:00
Fabio Scotto di Santolo
80e6cc23c3 Added aliases for use SSH Windows implementation 2025-12-16 17:10:12 +01:00
Fabio Scotto di Santolo
aa1364ef29 Configure LSP for Shell Development 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
32bf8c73a8 Configure LSP for C development 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
39000ec304 Improved init performance and added configuration for LSP and DAP 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
a3de598466 Added package Elfeed Org in the Emacs custom config 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
4915a1fce2 Fix Starship prompt 2025-12-16 17:08:25 +01:00
Fabio Scotto di Santolo
58773ba594 Add LSP, Flycheck and others in the Emacs configuration 2025-12-12 09:20:25 +01:00
Fabio Scotto di Santolo
7b0d1bf03a Change Emacs configuration 2025-12-12 09:20:25 +01:00
Fabio Scotto di Santolo
fc1478567e Fix path loading in .profile 2025-12-02 09:58:42 +01:00
Fabio Scotto di Santolo
44a425d2df Fix Mise commit 2025-12-02 09:52:04 +01:00
Fabio Scotto di Santolo
16ca912724 Fix Mise loading 2025-12-02 09:49:07 +01:00
Fabio Scotto di Santolo
babbceb247 Align Sway and i3 configurations 2025-12-01 12:09:40 +01:00
Fabio Scotto di Santolo
f4d92f747e Added Wayland environment with Sway 2025-12-01 12:09:40 +01:00
Fabio Scotto di Santolo
ca92392993 Change Rofi theme 2025-11-28 16:13:51 +01:00
Fabio Scotto di Santolo
8a6e022bd6 Add Youtube RSS feeds 2025-11-28 16:13:51 +01:00
Fabio Scotto di Santolo
366ea24fb5 Fix SMTP client config 2025-11-28 16:13:51 +01:00
Fabio Scotto di Santolo
385d306017 Update mu4e configuration
- Added ProtonMail account
- Added iCloud Mail account
- Remove Gmail account
2025-11-28 16:13:51 +01:00
Fabio Scotto di Santolo
dd7498294a Added Emacs Client alias 2025-10-30 16:20:38 +01:00
Fabio Scotto di Santolo
cd1a6c1252 Fix .gitconfig for WSL 2025-10-30 15:41:34 +01:00
203 changed files with 4251 additions and 421 deletions

View File

@@ -27,7 +27,7 @@ This repository contains my configuration files for the following tools:
- `alacritty`
- `tmux`
- **Editors & CLI Tools**
- `emacs` (Doom Emacs config)
- `doom` (Doom Emacs config)
- `emacs` (Custom config)
- `git`
- **X11 Environment**
@@ -36,6 +36,11 @@ This repository contains my configuration files for the following tools:
- `polybar` (status bar)
- `rofi` (launcher)
- `dunst` (notification daemon)
- **Wayland Environment**
- `sway` (Window Manager)
- `waybar` (status bar)
- `rofi` (launcher)
- `dunst` (notification daemon)
- **Utilities**
- `fastfetch`
- `zoxide`

View File

@@ -1,7 +1,7 @@
# Enable the subsequent settings only in interactive sessions
case $- in
*i*) ;;
*) return;;
*) return ;;
esac
# Path to your oh-my-bash installation.
@@ -91,18 +91,27 @@ OMB_USE_SUDO=true
# Add wisely, as too many completions slow down shell startup.
completions=(
asdf
brew
docker
docker-compose
gh
git
go
helm
kubectl
makefile
maven
minikube
npm
nvm
oc
pip3
pip
sdkman
ssh
system
tmux
composer
ssh
vagrant
)
# Which aliases would you like to load? (aliases can be found in ~/.oh-my-bash/aliases/*)
@@ -118,12 +127,8 @@ aliases=(
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
bashmarks
bash-preexec
cargo
colored-man-pages
git
zoxide
)
# Which plugins would you like to conditionally load? (plugins can be found in ~/.oh-my-bash/plugins/*)
@@ -166,7 +171,11 @@ source "$OSH"/oh-my-bash.sh
# users are encouraged to define aliases within the OSH_CUSTOM folder.
# For a full list of active aliases, run `
# export EDITOR="emacs -nw"
# export VISUAL="emacs"
alias ls='ls --color=auto --group-directories-first'
alias lsx='ls -AXF'
# Replace grep command tool
alias grep='grep --color=auto'
@@ -174,17 +183,18 @@ alias egrep='grep -E'
alias fgrep='grep -F'
# Other aliases
alias paths='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths
alias paths='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths
alias userlist="cut -d: -f1 /etc/passwd | sort"
alias ip='ip -color'
alias stow='stow -d $DOTFILES '
alias em='emacsclient -t'
# Starship prompt
if command -v starship > /dev/null 2>&1; then
eval "$(starship init bash)"
fi
# Load Mise en dev
if command -v mise > /dev/null 2>&1; then
eval "$(mise activate bash)"
# User specific aliases and functions
if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
if [ -f "$rc" ]; then
. "$rc"
fi
done
fi
unset rc

5
bash/.bashrc.d/homebrew.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
if command -v /home/linuxbrew/.linuxbrew/bin/brew >/dev/null 2>&1; then
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
fi

6
bash/.bashrc.d/java.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
if command -v java > /dev/null 2>&1; then
JAVA_HOME="$(dirname $(mise bin-paths | grep -i java))"
export JAVA_HOME
fi

6
bash/.bashrc.d/mise.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env sh
# Load Mise en dev
if command -v mise > /dev/null 2>&1; then
eval "$(mise activate bash)"
fi

6
bash/.bashrc.d/starship.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
# Starship prompt
if command -v starship >/dev/null 2>&1; then
eval "$(starship init bash)"
fi

5
bash/.bashrc.d/zoxide.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
if command -v zoxide >/dev/null 2>&1; then
eval "$(zoxide init bash)"
fi

791
bash/.dircolors Normal file
View File

@@ -0,0 +1,791 @@
# LS_COLORS ($Source: /my/shell/setup/.dircolors$)
# for ANSI color code see also [*](https://en.wikipedia.org/wiki/ANSI_escape_code)
#
# Maintainers: Magnus Woldrich <m@japh.se>,
# Ryan Delaney <ryan.delaney@gmail.com> OpenGPG: 0D98863B4E1D07B6
# Michel G. Combes <michelc@gc-bank.org> OpenGPG:
# URL: https://github.com/trapd00r/LS_COLORS
# Version: 0.254
# Updated: Tue Mar 29 21:25:30 AEST 2016
#
# This is a collection of extension:color mappings, suitable to use as your
# LS_COLORS environment variable. Most of them use the extended color map,
# described in the ECMA-48 document; in other words, you'll need a terminal
# with capabilities of displaying 256 colors.
#
# As of this writing, around 300 different filetypes/extensions is supported.
# That's indeed a lot of extensions, but there's a lot more! Therefore I need
# your help.
#
# Fork this project on github, add the extensions you are missing, and send me
# a pull request.
#
# For files that usually ends up next to each other, like html, css and js,
# try to pick colors that fit nicely together. Filetypes with multiple
# possible extensions, like htm and html, should have the same color.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the Perl Artistic License for more details.
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the Perl Artistic License as published by the Perl Foundation,
# either version 1.0 of the License, or (at your option) any later version.
#
# You should have received a copy of the Perl Artistic License along
# with this program. If not, see <http://www.perlfoundation.org/artistic_license_1_0>.
# core {{{1
BLK 38;5;68
CAPABILITY 38;5;17
CHR 38;5;113;1
DIR 38;1;35
#DIR 04;38;5;223
DOOR 38;5;127
#EXEC 38;5;222;48;2;1;16;32;1
EXEC 00;48;2;1;16;32;1
#EXEC 38;5;208;1
FIFO 38;5;126
FILE 0
LINK target
MULTIHARDLINK 38;5;222;1
# "NORMAL don't reset the bold attribute -
# https://github.com/trapd00r/LS_COLORS/issues/11
#NORMAL 38;5;254
NORMAL 0
ORPHAN 48;5;196;38;5;232;1
OTHER_WRITABLE 04;1;38;5;153;48;2;10;40;2
SETGID 48;5;3;38;5;0
SETUID 38;5;220;1;3;100;1
SOCK 38;5;197
STICKY 38;5;86;48;5;234
STICKY_OTHER_WRITABLE 48;5;235;38;5;139;3
*LS_COLORS 48;5;89;38;5;197;1;3;4;7 # :-)
# }}}
# documents {{{1
*README 38;5;220;1
*README.rst 38;5;220;1
*README.md 38;5;220;1
*LICENSE 38;5;220;1
*COPYING 38;5;220;1
*INSTALL 38;5;220;1
*COPYRIGHT 38;5;220;1
*AUTHORS 38;5;220;1
*HISTORY 38;5;220;1
*CONTRIBUTORS 38;5;220;1
*PATENTS 38;5;220;1
*VERSION 38;5;220;1
*NOTICE 38;5;220;1
*CHANGES 38;5;220;1
#.log 38;5;190
.log 38;5;70
# plain-text {{{2
.txt 38;5;253
# markup {{{2
.etx 38;5;184
.info 38;5;184
.markdown 38;5;184
.md 38;5;184
.mkd 38;5;184
.nfo 38;5;184
.pod 38;5;184
.rst 38;5;184
.tex 38;5;184
.textile 38;5;184
# key-value, non-relational data {{{2
.bib 38;5;178
.json 38;5;178
.jsonl 38;5;178
.msg 38;5;178
.pgn 38;5;178
.rss 38;5;178
.xml 38;5;178
.toml 38;5;178
.yaml 38;5;178
.yml 38;5;178
.RData 38;5;178
.rdata 38;5;178
# }}}
# binary {{{2
.cbr 38;5;141
.cbz 38;5;141
.chm 38;5;141
.djvu 38;5;141
.pdf 38;5;141
.PDF 38;5;141
.mobi 38;5;141
.epub 38;5;141
# words {{{3
.docm 38;5;111;4
.doc 38;5;111
.docx 38;5;111
.eps 38;5;111
.ps 38;5;111
.odb 38;5;111
.odt 38;5;111
.rtf 38;5;111
# presentation {{{3
.odp 38;5;166
.pps 38;5;166
.ppt 38;5;166
.pptx 38;5;166
# Powerpoint show
.ppts 38;5;166
# Powerpoint with enabled macros
.pptxm 38;5;166;4
# Powerpoint show with enabled macros
.pptsm 38;5;166;4
# spreadsheet {{{3
.csv 38;5;78
# Open document spreadsheet
.ods 38;5;112
.xla 38;5;76
# Excel spreadsheet
.xls 38;5;112
.xlsx 38;5;112
# Excel spreadsheet with macros
.xlsxm 38;5;112;4
# Excel module
.xltm 38;5;73;4
.xltx 38;5;73
# }}}
# }}}
# configs {{{2
*config 1
*cfg 1
*conf 1
*rc 1
*authorized_keys 1
*known_hosts 1
.ini 1
.plist 1
# vim
.viminfo 1
# cisco VPN client configuration
.pcf 1
# adobe photoshop proof settings file
.psf 1
# }}}
# }}}
# code {{{1
# version control {{{2
.git 38;5;197
.gitignore 38;5;240
.gitattributes 38;5;240
.gitmodules 38;5;240
# shell {{{2
.awk 38;5;172
.bash 38;5;172
.bat 38;5;172
.BAT 38;5;172
.sed 38;5;172
.sh 38;5;172
.zsh 38;5;172
.vim 38;5;172
# interpreted {{{2
.ahk 38;5;41
# python
.py 38;5;41
.ipynb 38;5;41
# ruby
.rb 38;5;41
.gemspec 38;5;41
# perl
.pl 38;5;107
.pm 38;5;77
.PL 38;5;160
.t 38;5;114
# sql
.msql 38;5;222
.mysql 38;5;222
.pgsql 38;5;222
.sql 38;5;222
# Tool Command Language
.tcl 38;5;64;1
# R language
.r 38;5;49
.R 38;5;49
# GrADS script
.gs 38;5;81
# Clojure
.clj 38;5;41
.cljs 38;5;41
.cljc 38;5;41
# Clojure gorilla REPL worksheet
.cljw 38;5;41
# Scala
.scala 38;5;41
# Dart
.dart 38;5;51
# compiled {{{2
#
# assembly language
.asm 38;5;81
# LISP
.cl 38;5;81
.lisp 38;5;81
# lua
.lua 38;5;81
# Moonscript
.moon 38;5;81
# C
.c 38;5;81
.C 38;5;81
.h 38;5;110
.H 38;5;110
.tcc 38;5;110
# C++
.c++ 38;5;81
.h++ 38;5;110
.hpp 38;5;110
.hxx 38;5;110
.ii 38;5;110
# method file for Objective C
.M 38;5;110
.m 38;5;110
# Csharp
.cc 38;5;81
.cs 38;5;81
.cp 38;5;81
.cpp 38;5;81
.cxx 38;5;81
# Crystal
.cr 38;5;81
# Google golang
.go 38;5;81
# fortran
.f 38;5;81
.F 38;5;81
.for 38;5;81
.ftn 38;5;81
.f90 38;5;81
.F90 38;5;81
.f95 38;5;81
.F95 38;5;81
.f03 38;5;81
.F03 38;5;81
.f08 38;5;81
.F08 38;5;81
# Nim
.nim 38;5;81
.nimble 38;5;81
# pascal
.s 38;5;110
.S 38;5;110
# Rust
.rs 38;5;81
# Swift
.swift 38;5;219
# ?
.sx 38;5;81
# Vala
.vala 38;5;81
.vapi 38;5;81
# interface file in GHC - https://github.com/trapd00r/LS_COLORS/pull/9
.hi 38;5;110
# haskell
.hs 38;5;81
.lhs 38;5;81
# agda
.agda 38;5;81
.lagda 38;5;81
.lagda.tex 38;5;81
.lagda.rst 38;5;81
.lagda.md 38;5;81
.agdai 38;5;110
# binaries {{{2
# compiled apps for interpreted languages
.pyc 38;5;240
# }}}
# orchestration {{{2
.tf 38;5;168
.tfstate 38;5;168
.tfvars 38;5;168
# orchestration 2}}}
# html {{{2
.css 38;5;125;1
.less 38;5;125;1
.sass 38;5;125;1
.scss 38;5;125;1
.htm 38;5;125;1
.html 38;5;125;1
.jhtm 38;5;125;1
.mht 38;5;125;1
.eml 38;5;125;1
.mustache 38;5;125;1
.httt 38;5;125;1
# }}}
# java {{{2
.coffee 38;5;074;1
.java 38;5;074;1
.js 38;5;074;1
.mjs 38;5;074;1
.jsm 38;5;074;1
.jsm 38;5;074;1
.jsp 38;5;074;1
# }}}
# php {{{2
.php 38;5;81
# CakePHP view scripts and helpers
.ctp 38;5;81
# Twig template engine
.twig 38;5;81
# }}}
# vb/a {{{2
.vb 38;5;81
.vba 38;5;81
.vbs 38;5;81
# 2}}}
# Build stuff {{{2
*Dockerfile 38;5;155
.dockerignore 38;5;240
*Makefile 38;5;155
*MANIFEST 38;5;243
*pm_to_blib 38;5;240
# Functional Configuration
.nix 38;5;155
.dhall 38;5;178
# ruby rake
.rake 38;5;155
# automake
.am 38;5;242
.in 38;5;242
.hin 38;5;242
.scan 38;5;242
.m4 38;5;242
.old 38;5;242
.out 38;5;242
.SKIP 38;5;244
# }}}
# patch files {{{2
.diff 48;5;197;38;5;232
.patch 48;5;197;38;5;232;1
#}}}
# graphics {{{1
.bmp 38;5;97
.dicom 38;5;97
.tiff 38;5;97
.tif 38;5;97
.TIFF 38;5;97
.cdr 38;5;97
.flif 38;5;97
.gif 38;5;97
.ico 38;5;97
.jpeg 38;5;97
.JPG 38;5;97
.jpg 38;5;97
.nth 38;5;97
.png 38;5;97
.psd 38;5;97
.xpm 38;5;97
.webp 38;5;97
# }}}
# vector {{{1
.ai 38;5;99
.eps 38;5;99
.epsf 38;5;99
.drw 38;5;99
.ps 38;5;99
.svg 38;5;99
# }}}
# video {{{1
.avi 38;5;114
.divx 38;5;114
.IFO 38;5;114
.m2v 38;5;114
.m4v 38;5;114
.mkv 38;5;114
.MOV 38;5;114
.mov 38;5;114
.mp4 38;5;114
.mpeg 38;5;114
.mpg 38;5;114
.ogm 38;5;114
.rmvb 38;5;114
.sample 38;5;114
.wmv 38;5;114
# mobile/streaming {{{2
.3g2 38;5;115
.3gp 38;5;115
.gp3 38;5;115
.webm 38;5;115
.gp4 38;5;115
.asf 38;5;115
.flv 38;5;115
.ts 38;5;115
.ogv 38;5;115
.f4v 38;5;115
# }}}
# lossless {{{2
.VOB 38;5;115;1
.vob 38;5;115;1
# }}}
# audio {{{1
.3ga 38;5;137;1
.S3M 38;5;137;1
.aac 38;5;137;1
.au 38;5;137;1
.dat 38;5;137;1
.dts 38;5;137;1
.fcm 38;5;137;1
.m4a 38;5;137;1
.mid 38;5;137;1
.midi 38;5;137;1
.mod 38;5;137;1
.mp3 38;5;137;1
.mp4a 38;5;137;1
.oga 38;5;137;1
.ogg 38;5;137;1
.opus 38;5;137;1
.s3m 38;5;137;1
.sid 38;5;137;1
.wma 38;5;137;1
# lossless
.ape 38;5;136;1
.aiff 38;5;136;1
.cda 38;5;136;1
.flac 38;5;136;1
.alac 38;5;136;1
.midi 38;5;136;1
.pcm 38;5;136;1
.wav 38;5;136;1
.wv 38;5;136;1
.wvc 38;5;136;1
# }}}
# fonts {{{1
.afm 38;5;66
.fon 38;5;66
.fnt 38;5;66
.pfb 38;5;66
.pfm 38;5;66
.ttf 38;5;66
.otf 38;5;66
# postscript fonts
.PFA 38;5;66
.pfa 38;5;66
# }}}
# archives {{{1
.7z 38;5;40
.a 38;5;40
.arj 38;5;40
.bz2 38;5;40
.cpio 38;5;40
.gz 38;5;40
.lrz 38;5;40
.lz 38;5;40
.lzma 38;5;40
.lzo 38;5;40
.rar 38;5;40
.s7z 38;5;40
.sz 38;5;40
.tar 38;5;40
.tgz 38;5;40
.xz 38;5;40
.z 38;5;40
.Z 38;5;40
.zip 38;5;40
.zipx 38;5;40
.zoo 38;5;40
.zpaq 38;5;40
.zz 38;5;40
# packaged apps {{{2
.apk 38;5;215
.deb 38;5;215
.rpm 38;5;215
.jad 38;5;215
.jar 38;5;215
.cab 38;5;215
.pak 38;5;215
.pk3 38;5;215
.vdf 38;5;215
.vpk 38;5;215
.bsp 38;5;215
.dmg 38;5;215
# }}}
# segments from 0 to three digits after first extension letter {{{2
.r[0-9]{0,2} 38;5;239
.zx[0-9]{0,2} 38;5;239
.z[0-9]{0,2} 38;5;239
# partial files
.part 38;5;239
# }}}
# partition images {{{2
.dmg 38;5;124
.iso 38;5;124
.bin 38;5;124
.nrg 38;5;124
.qcow 38;5;124
.sparseimage 38;5;124
.toast 38;5;124
.vcd 38;5;124
.vmdk 38;5;124
# }}}
# databases {{{2
.accdb 38;5;60
.accde 38;5;60
.accdr 38;5;60
.accdt 38;5;60
.db 38;5;60
.fmp12 38;5;60
.fp7 38;5;60
.localstorage 38;5;60
.mdb 38;5;60
.mde 38;5;60
.sqlite 38;5;60
.typelib 38;5;60
# NetCDF database
.nc 38;5;60
# }}}
# tempfiles {{{1
# undo files
.pacnew 38;5;33
.un~ 38;5;241
.orig 38;5;241
# backups
.BUP 38;5;241
.bak 38;5;241
.o 38;5;241 # *nix Object file (shared libraries, core dumps etc)
*core 38;5;241 # Linux user core dump file (from /proc/sys/kernel/core_pattern)
.rlib 38;5;241 # Static rust library
# temporary files
.swp 38;5;244
.swo 38;5;244
.tmp 38;5;244
.sassc 38;5;244
# state files
.pid 38;5;248
.state 38;5;248
*lockfile 38;5;248
*lock 38;5;248
# error logs
.err 38;5;160;1
.error 38;5;160;1
.stderr 38;5;160;1
# state dumps
.aria2 38;5;241
.dump 38;5;241
.stackdump 38;5;241
.zcompdump 38;5;241
.zwc 38;5;241
# tcpdump, network traffic capture
.pcap 38;5;29
.cap 38;5;29
.dmp 38;5;29
# macOS
.DS_Store 38;5;239
.localized 38;5;239
.CFUserTextEncoding 38;5;239
# }}}
# hosts {{{1
# /etc/hosts.{deny,allow}
.allow 38;5;112
.deny 38;5;196
# }}}
# systemd {{{1
# http://www.freedesktop.org/software/systemd/man/systemd.unit.html
.service 38;5;45
*@.service 38;5;45
.socket 38;5;45
.swap 38;5;45
.device 38;5;45
.mount 38;5;45
.automount 38;5;45
.target 38;5;45
.path 38;5;45
.timer 38;5;45
.snapshot 38;5;45
# }}}
# metadata {{{1
.application 38;5;116
.cue 38;5;116
.description 38;5;116
.directory 38;5;116
.m3u 38;5;116
.m3u8 38;5;116
.md5 38;5;116
.properties 38;5;116
.sfv 38;5;116
.srt 38;5;116
.sub 38;5;116
.theme 38;5;116
.torrent 38;5;116
.urlview 38;5;116
# }}}
# encrypted data {{{1
.sec 38;5;160;3;8
.pub 38;5;42;3
.priv 38;5;161;3
.key 38;5;162;3
.kbx 38;5;72;3
.asc 38;5;72;3;28
.bfe 38;5;72;3
.enc 38;5;72;3
.gpg 38;5;72;3
.signature 38;5;72;3
.sig 38;5;72;3
.p12 38;5;72;3
.pem 38;5;72;3
.pgp 38;5;72;3
.asc 38;5;72;3
.enc 38;5;72;3
.sig 38;5;72;3
.p7s 38;5;72;3
.ppk 38;5;72;3
*id_dsa 38;5;72;3
*id_rsa 38;5;72;3
*id_ecdsa 38;5;72;3
*id_ed25519 38;5;72;3
# 1}}}
# emulators {{{1
.32x 38;5;213
.cdi 38;5;213
.fm2 38;5;213
.rom 38;5;213
.sav 38;5;213
.st 38;5;213
# atari
.a00 38;5;213
.a52 38;5;213
.A64 38;5;213
.a64 38;5;213
.a78 38;5;213
.adf 38;5;213
.atr 38;5;213
# nintendo
.gb 38;5;213
.gba 38;5;213
.gbc 38;5;213
.gel 38;5;213
.gg 38;5;213
.ggl 38;5;213
.ipk 38;5;213 # Nintendo (DS Packed Images)
.j64 38;5;213
.nds 38;5;213
.nes 38;5;213
# Sega
.sms 38;5;213
# }}}
# unsorted {{{1
#
# Portable Object Translation for GNU Gettext
.pot 38;5;7
# CAD files for printed circuit boards
.pcb 38;5;7
# groff (rendering app for texinfo)
.mm 38;5;7
# perldoc
.pod 38;5;7
# GIMP files
.gbr 38;5;7
.scm 38;5;7
.xcf 38;5;7
# printer spool file
.spl 38;5;7
# RStudio project file
.Rproj 38;5;11
# Nokia Symbian OS files
.sis 38;5;7
.1p 38;5;7
.3p 38;5;7
.cnc 38;5;7
.def 38;5;7
.ex 38;5;7
.example 38;5;7
.feature 38;5;7
.ger 38;5;7
.map 38;5;7
.mf 38;5;7
.mfasl 38;5;7
.mi 38;5;7
.mtx 38;5;7
.pc 38;5;7
.pi 38;5;7
.plt 38;5;7
#.pm 38;5;7
.rdf 38;5;7
.ru 38;5;7
.sch 38;5;7
.sty 38;5;7
.sug 38;5;7
.t 38;5;7
.tdy 38;5;7
.tfm 38;5;7
.tfnt 38;5;7
.tg 38;5;7
.vcard 38;5;7
.vcf 38;5;7
.xln 38;5;7
# AppCode files
.iml 38;5;166
# Xcode files
.xcconfig 1
.entitlements 1
.strings 1
.storyboard 38;5;196
.xcsettings 1
.xib 38;5;208
# }}}
# termcap {{{1
TERM ansi
TERM color-xterm
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM Eterm
TERM eterm-color
TERM gnome
TERM gnome-256color
TERM jfbterm
TERM konsole
TERM kterm
TERM linux
TERM linux-c
TERM mach-color
TERM mlterm
TERM putty
TERM rxvt
TERM rxvt-256color
TERM rxvt-cygwin
TERM rxvt-cygwin-native
TERM rxvt-unicode
TERM rxvt-unicode-256color
TERM rxvt-unicode256
TERM screen
TERM screen-256color
TERM screen-256color-bce
TERM screen-bce
TERM screen-w
TERM screen.linux
TERM screen.rxvt
TERM terminator
TERM vt100
TERM xterm
TERM xterm-16color
TERM xterm-256color
TERM xterm-88color
TERM xterm-color
TERM xterm-debian
TERM xterm-kitty
# }}}
# vim: ft=dircolors:fdm=marker:et:sw=2:

View File

@@ -15,7 +15,8 @@ export QT_STYLE_OVERRIDE=kvantum
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export DOTFILES="$HOME/.dotfiles"
export EDITOR=nano
export EDITOR="emacs -nw"
export VISUAL="emacs"
# SSH socket
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
@@ -38,9 +39,6 @@ export VIRTUAL_ENV_DISABLE_PROMPT=1
export GOPATH="$HOME/.local/share/Go"
export GOBIN="$GOPATH/bin"
source "$HOME/.profile.d/homebrew.sh"
source "$HOME/.profile.d/java.sh"
appendpath() {
local location="${1}"
case ":$PATH:" in
@@ -51,7 +49,4 @@ appendpath() {
appendpath "$HOME/.local/bin"
appendpath "$GOBIN"
appendpath "$HOME/.cargo/bin"
appendpath "/home/linuxbrew/.linuxbrew/bin"
appendpath "$HOME/.config/emacs/bin"
unset appendpath

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
if command -v brew > /dev/null 2>&1; then
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
fi

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
if command -v java > /dev/null 2>&1; then
export JAVA_HOME="$(dirname $(mise bin-paths | grep -i java))"
fi

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env zsh
if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
tmux attach-session -t default || tmux new-session -s default
fi

View File

@@ -6,7 +6,7 @@
# for a list of all available themes
# Theme
--theme="Catppuccin Mocha"
--theme="Coldark-Dark"
# Style
--style="header,changes,numbers"

View File

@@ -43,7 +43,7 @@
;; If you use `org' and don't want your org files in the default location below,
;; change `org-directory'. It must be set before org loads!
(setq org-directory "~/Org/")
(setq org-directory "~/Remotes/pCloud/Org")
;; Whenever you reconfigure a package, make sure to wrap your config in an
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
@@ -81,6 +81,7 @@
(add-to-list 'default-frame-alist '(fullscreen . maximized))
(after! mu4e
;; This is set to 't' to avoid mail syncing issues when using mbsync
(setq mu4e-change-filenames-when-moving t)
@@ -89,20 +90,38 @@
(setq mu4e-get-mail-command "~/.config/doom/scripts/email_sync.sh")
(setq mu4e-maildir "~/Maildir")
(setq mu4e-drafts-folder "/GmailAccount/[Gmail]/Bozze")
(setq mu4e-sent-folder "/GmailAccount/[Gmail]/Posta inviata")
(setq mu4e-refile-folder "/GmailAccount/[Gmail]/Tutti i messaggi")
(setq mu4e-trash-folder "/GmailAccount/[Gmail]/Cestino")
(setq user-email-address "fabio.scottodisantolo@gmail.com")
(setq user-full-name "Fabio Scotto di Santolo")
;; Configure email accounts
(setq mu4e-contexts
(list
;; Protonmail Account
(make-mu4e-context
:name "Protonmail"
:match-func
(lambda (msg)
(when msg
(string-prefix-p "/ProtonMailAccount" (mu4e-message-field msg :maildir))))
:vars '((user-mail-address . "fscottodisantolo@protonmail.com")
(user-full-name . "Fabio Scotto di Santolo")
(mu4e-drafts-folder . "/ProtonMailAccount/Drafts")
(mu4e-sent-folder . "/ProtonMailAccount/Sent")
(mu4e-refile-folder . "/ProtonMailAccount/All Mail")
(mu4e-trash-folder . "/ProtonMailAccount/Trash")))
(setq mu4e-maildir-shortcuts
'(("/GmailAccount/Inbox" . ?i)
("/GmailAccount/[Gmail]/Posta inviata" . ?s)
("/GmailAccount/[Gmail]/Cestino" . ?t)
("/GmailAccount/[Gmail]/Bozze" . ?d)
("/GmailAccount/[Gmail]/Tutti i messaggi" . ?a)))
;; iCloud Account
(make-mu4e-context
:name "iCloud Mail"
:match-func
(lambda (msg)
(when msg
(string-prefix-p "/iCloudAccount" (mu4e-message-field msg :maildir))))
:vars '((user-mail-address . "fscottodisantolo@icloud.com")
(user-full-name . "Fabio Scotto di Santolo")
(mu4e-drafts-folder . "/iCloudAccount/Drafts")
(mu4e-sent-folder . "/iCloudAccount/Sent Messages")
(mu4e-refile-folder . "/iCloudAccount/INBOX")
(mu4e-trash-folder . "/iCloudAccount/Junk")))))
;; Configure SMTP client for send emails
(setq sendmail-program "/usr/bin/msmtp"
send-mail-function 'sendmail-send-it
message-sendmail-f-is-evil t
@@ -115,12 +134,23 @@
(setq elfeed-db-directory "~/.elfeed")
(setq elfeed-enclosure-default-dir "~/Downloads/")
(setq elfeed-sort-order 'descending)
(setq elfeed-search-filter "1-week-ago +unread")
(setq elfeed-search-filter "6-months-ago +unread")
;; ;; Key bindings
;; (map! :map elfeed-search-mode-map
;; :n "d" #'elfeed-download-current-entry
;; :n "O" #'elfeed-search-browse-url)
;; Key bindings
(map! :map elfeed-search-mode-map
:n "d" #'elfeed-download-current-entry
:n "O" #'elfeed-search-browse-url)
;; Update hourly
(run-at-time nil (* 60 60) #'elfeed-update))
(after! elfeed-tube
(elfeed-tube-setup))
;; PDF config
(after! pdf-tools
:defer t
:commands (pdf-loader-install)
:mode "\\.pdf\\'"
:init (pdf-loader-install)
:config (add-to-list 'revert-without-query ".pdf"))

View File

@@ -0,0 +1,21 @@
(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.
'(elfeed-feeds
'("https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig" "https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg"
("https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg" youtube programming)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg" youtube programming)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw" youtube foss)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig" youtube programming)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw" youtube fashion)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg" youtube linux)
("https://blog.linuxmint.com/?feed=rss2" news linuxmint)
("https://feeds.feedburner.com/TheHackersNews" programming security))))
(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.
)

View File

@@ -7,3 +7,10 @@
*** [[https://feeds.feedburner.com/TheHackersNews][Hacker News]] :news: :security:
** FOSS News :news:
*** [[https://blog.linuxmint.com/?feed=rss2][Linux Mint Blog]] :blog: :linux: :linuxmint:
** Youtube :youtube:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg][DistroTube]] :emacs: :foss: :linux:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw][Douglas Mortimer]] :fashion:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig][Esadecimale]] :emacs: :programming:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw][MorroLinux]] :linux: :foss:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg][Salvatore Sanfilippo]] :programming:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg][Tsoding Daily]] :emacs: :programming:

View File

@@ -54,3 +54,6 @@
;; (unpin! t)
(package! catppuccin-theme)
(package! org-caldav)
(package! elfeed-tube)
(package! elfeed-tube-mpv)

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env sh
mbsync Gmail & pid1=$!
mbsync -a & pid1=$!
wait $pid1
mu index

View File

@@ -1,233 +0,0 @@
;; Initial greeting for debugging
(message "Welcome to Emacs")
(message "Loading user configuration...")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; LOOK AND FEEL ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Setting default font
(set-frame-font "0xProto Nerd Font 13" nil t)
;; Remove toolbar
(tool-bar-mode -1)
;; Remove menu
(menu-bar-mode -1)
;; Disable startup screen
(setq inhibit-startup-screen t)
;; Disable splash screen
(setq inhibit-splash-screen t)
;; Start all frames maximized
(add-to-list 'default-frame-alist '(fullscreen . maximized))
;; Remove scrollbar
(scroll-bar-mode -1)
;; Simple 'y' for 'yes' and 'n' for 'no'
(defalias 'yes-or-no-p 'y-or-n-p)
;; Set global value for paragraph witdh
(setq-default fill-column 120)
;; Stop Emacs from losing informations
(setq undo-limit 2000000)
(setq undo-strong-limit 4000000000)
;; Smooth scroll
(setq scroll-step 3)
(setq ring-bell-function 'ignore)
;; Add column number in the status line
(column-number-mode)
;; View clock in the status line
(display-time)
;; Enable line numbers in the programming mode only
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
;; Enable line numbers in the configuration mode only
(add-hook 'conf-mode-hook 'display-line-numbers-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; EDITOR OPTIONS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq standard-indent 4)
(setq tab-stop-list nil)
(setq indent-tabs-mode nil)
;; Setting variables
(setq vc-follow-symlinks 't)
(prefer-coding-system 'utf-8-unix)
(setq custom-file (null-device))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PACKAGES ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Initialize package system via use-package
(package-initialize)
(require 'use-package)
(use-package package
:config
;; Setting repo priorities
(setq package-archive-priorities
'(("melpa-stable" . 2)
("MELPA" . 1)
("gnu" . 0)))
;; Setting repo URL
(setq package-archives
'(("melpa-stable" . "https://stable.melpa.org/packages/")
("MELPA" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/")))
)
(use-package catppuccin-theme
:ensure t
:config
(load-theme 'catppuccin :no-confirm)
(setq catppuccin-flavor 'mocha))
;; Status line like Doom Emacs
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1))
;; Help to remember or discover keybindings
(use-package which-key
:ensure t
:commands (which-key-mode)
:init (which-key-mode))
;; Configuration for mu4e, an interface for mu email index, running inside Emacs
(use-package mu4e
:ensure nil
;; :load-path "/usr/share/emacs/site-lisp/mu4e/"
:defer 20 ; Wait until 20 seconds after startup
:bind (:map global-map ("C-c e" . mu4e))
:config
;; This is set to 't' to avoid mail syncing issues when using mbsync
(setq mu4e-change-filenames-when-moving t)
;; Refresh mail using isync every 10 minutes
(setq mu4e-update-interval (* 10 60))
(setq mu4e-get-mail-command "~/.config/emacs/scripts/email_sync.sh")
(setq mu4e-maildir "~/Maildir")
(setq mu4e-drafts-folder "/GmailAccount/[Gmail]/Bozze")
(setq mu4e-sent-folder "/GmailAccount/[Gmail]/Posta inviata")
(setq mu4e-refile-folder "/GmailAccount/[Gmail]/Tutti i messaggi")
(setq mu4e-trash-folder "/GmailAccount/[Gmail]/Cestino")
(setq user-email-address "fabio.scottodisantolo@gmail.com")
(setq user-full-name "Fabio Scotto di Santolo")
(setq mu4e-maildir-shortcuts
'(("/GmailAccount/Inbox" . ?i)
("/GmailAccount/[Gmail]/Posta inviata" . ?s)
("/GmailAccount/[Gmail]/Cestino" . ?t)
("/GmailAccount/[Gmail]/Bozze" . ?d)
("/GmailAccount/[Gmail]/Tutti i messaggi" . ?a))))
(setq user-mail-address "fabio.scottodisantolo@gmail.com")
(setq sendmail-program "/usr/bin/msmtp"
send-mail-function 'sendmail-send-it
message-sendmail-f-is-evil t
message-sendmail-extra-arguments '("--read-envelope-from")
message-send-mail-function 'message-send-mail-with-sendmail)
;; Configure elfeed for RSS feed
(use-package elfeed
:ensure t
:custom
(elfeed-db-directory "~/.cache/elfeed")
(elfeed-enclosure-default-dir "~/Downloads/")
(elfeed-search-remain-on-entry t)
(elfeed-search-title-max-width 100)
(elfeed-search-title-min-width 30)
(elfeed-search-trailing-width 25)
(elfeed-show-truncate-long-urls t)
(elfeed-sort-order 'descending)
(elfeed-search-filter "1-week-ago +unread")
(elfeed-feeds
'(("https://blog.linuxmint.com/?feed=rss2" linux linuxmint)
("https://feeds.feedburner.com/TheHackersNews" hackernews news security programming)))
:bind (("C-c f" . elfeed)))
;; Terminal
(use-package vterm
:ensure t
:bind (:map global-map
("C-c t" . vterm)
("C-c c" . vterm-copy-mode)))
;; PDF viewer with annotations
(use-package pdf-tools
:ensure t
:config
(pdf-tools-install))
;; EPub viewer
(use-package nov
:ensure t
:mode ("\\.epub\\'" . nov-mode))
(use-package visual-fill-column
:ensure t)
;; Git plugin
(use-package magit
:ensure t
:bind (:map global-map ("M-G" . magit-status)))
(use-package magit-delta
:ensure t)
;; Highlight keywords to remember the activity when coding.
(use-package hl-todo
:ensure t
:commands (global-hl-todo-mode)
:init (global-hl-todo-mode))
(setq hl-todo-keyword-faces
'(("TODO" . "#94e2d5")
("FIXME" . "#f38ba8")
("DEBUG" . "#cba6f7")
("GOTCHA" . "#eba0ac")
("STUB" . "#89b4fa")))
(keymap-set hl-todo-mode-map "C-c p" #'hl-todo-previous)
(keymap-set hl-todo-mode-map "C-c n" #'hl-todo-next)
(keymap-set hl-todo-mode-map "C-c o" #'hl-todo-occur)
(keymap-set hl-todo-mode-map "C-c i" #'hl-todo-insert)
;; Highlight for i3 config file
(use-package i3wm-config-mode
:ensure t)
;; Add autocomplete feature to Emacs
(use-package company
:ensure t
:commands (global-company-mode)
:init (global-company-mode)
:custom
(company-tooltip-align-annotations 't)
(company-minimum-prefix-length 1)
(company-idle-delay 0.1))
;; TODO adding lsp-mode, dap-mode, autocomplete and project handling for C, Go, Bash and Python
(use-package lsp-mode
:ensure t
:init
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
(setq lsp-keymap-prefix "C-c l")
:hook ((c-mode . lsp))
:commands lsp)
(message "...user configuration loaded")

View File

@@ -14,6 +14,12 @@ tramp
eln-cache
projects
transient/
.dap-breakpoints
.lsp-session-v1
/.extension/**
url/**
**/*.bak
**/recentf
# Org-mode
.org-id-locations
@@ -47,6 +53,7 @@ flycheck_*.el
# projectiles files
.projectile
/projectile-bookmarks.eld
# directory configuration
.dir-locals.el

View File

@@ -0,0 +1,23 @@
;;=====================================================================================
;; Define loader functions
;;=====================================================================================
(defconst fscotto/modules-dir
(expand-file-name "lisp" user-emacs-directory))
(defun fscotto/load-module (module)
"Load a MODULE from symbol."
(let* ((module-name (symbol-name module))
(path (expand-file-name
(concat (replace-regexp-in-string "/" "/" module-name)
".el")
fscotto/modules-dir)))
(unless (file-exists-p path)
(error "Module not found: %s" path))
(load path nil 'nomessage)))
(defun fscotto/load-modules (&rest modules)
"Load MODULES."
(mapc #'fscotto/load-module modules))
(defvar fscotto/emacs-profile
(or (getenv "EMACS_PROFILE") "full"))

16
emacs/.emacs.d/elfeed.org Normal file
View File

@@ -0,0 +1,16 @@
#+TITLE: RSS Urls
#+AUTHOR: Fabio Scotto di Santolo
#+DATE: <2025-10-25 Sat>
* root :elfeed:
** Programming :programming:
*** [[https://feeds.feedburner.com/TheHackersNews][Hacker News]] :news: :security:
** FOSS News :news:
*** [[https://blog.linuxmint.com/?feed=rss2][Linux Mint Blog]] :blog: :linux: :linuxmint:
** Youtube :youtube:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg][DistroTube]] :emacs: :foss: :linux:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw][Douglas Mortimer]] :fashion:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig][Esadecimale]] :emacs: :programming:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw][MorroLinux]] :linux: :foss:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg][Salvatore Sanfilippo]] :programming:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg][Tsoding Daily]] :emacs: :programming:

48
emacs/.emacs.d/init.el Normal file
View File

@@ -0,0 +1,48 @@
(message "Welcome to Emacs")
(message "Loading user configuration...")
(message "Emacs profile: %s" fscotto/emacs-profile)
;;=====================================================================================
;; Load modules
;;=====================================================================================
(fscotto/load-modules
;; Core
'core/packages
'core/ui
'core/performance
'core/editor
'core/keybindings
'core/buffer
;; Tools
'tools/completion
'tools/project
'tools/lsp
'tools/dap
;; 'tools/treesitter
;; Languages
'lang/c
'lang/docker
'lang/golang
'lang/json
'lang/markdown
'lang/org
'lang/shell
'lang/yaml
;; Misc
'misc/dashboard
'misc/custom-functions
'misc/doom-modeline
'misc/which-key
'misc/email
'misc/rss
'misc/terminal
'misc/vcs
;; FIXME PDF viewer with annotations
;; 'misc/pdf
'misc/epub
'misc/i3-config)
(message "...user configuration loaded")

View File

@@ -0,0 +1,21 @@
;;; buffer.el -*- lexical-binding: t; -*-
(use-package ibuffer
:ensure t)
(use-package ibuffer-tramp
:ensure t)
(use-package ibuffer-vc
:ensure t)
(use-package ibuffer-projectile
:ensure t)
(add-hook 'ibuffer-mode-hook
(lambda ()
(ibuffer-projectile-set-filter-groups)))
(provide 'buffer)
;;; buffer.el ends here

View File

@@ -0,0 +1,14 @@
;;; core-editor
(setq standard-indent 4)
(setq tab-stop-list nil)
(setq indent-tabs-mode nil)
;; Setting variables
(setq vc-follow-symlinks 't)
(prefer-coding-system 'utf-8-unix)
(setq custom-file (null-device))
(provide 'editor)
;;; editor.el ends here

View File

@@ -0,0 +1,161 @@
;;; keybindings.el -*- lexical-binding: t; -*-
;;;; Global / Core
(global-set-key (kbd "C-x C-b") #'ibuffer)
(global-set-key (kbd "C-<return>") 'company-complete)
(defvar fscotto/leader-map (make-sparse-keymap)
"Keymap per comandi sotto C-c.")
(define-key global-map (kbd "C-c") fscotto/leader-map)
;;;; Git / Magit
(defun fscotto/enable-magit-keymap ()
"Enable Git keybindings if current buffer is inside a Git repository."
(when (and (require 'magit nil 'noerror)
(magit-toplevel))
(local-set-key (kbd "C-c g") fscotto/git-map)))
(defvar fscotto/git-map (make-sparse-keymap)
"Keymap for Git commands under C-c g.")
(add-hook 'find-file-hook #'fscotto/enable-magit-keymap)
(add-hook 'prog-mode-hook #'fscotto/enable-magit-keymap)
(add-hook 'conf-mode-hook #'fscotto/enable-magit-keymap)
;; autoload: il tasto carica magit
(autoload 'magit-status "magit" nil t)
(autoload 'magit-branch "magit" nil t)
(autoload 'magit-commit "magit" nil t)
(autoload 'magit-push "magit" nil t)
(autoload 'magit-fetch "magit" nil t)
;; keybinding (sempre definite nella mappa)
(define-key fscotto/git-map (kbd "s") #'magit-status)
(define-key fscotto/git-map (kbd "b") #'magit-branch)
(define-key fscotto/git-map (kbd "c") #'magit-commit)
(define-key fscotto/git-map (kbd "p") #'magit-push)
(define-key fscotto/git-map (kbd "f") #'magit-fetch)
;;;; Open / Tools
(defvar fscotto/open (make-sparse-keymap))
(define-key fscotto/leader-map (kbd "o") fscotto/open)
;; -------- vterm --------
(autoload 'vterm "vterm" nil t)
(define-key fscotto/open (kbd "T") #'vterm)
(with-eval-after-load 'vterm
(define-key vterm-mode-map (kbd "C-c C-t") #'vterm-copy-mode))
;; -------- mu4e --------
(autoload 'mu4e "mu4e" nil t)
(define-key fscotto/open (kbd "m") #'mu4e)
;; -------- elfeed --------
(autoload 'elfeed "elfeed" nil t)
(define-key fscotto/open (kbd "f") #'elfeed)
;;;; Elfeed mode maps
(with-eval-after-load 'elfeed
(define-key elfeed-search-mode-map (kbd "w") #'elfeed-search-yank)
(define-key elfeed-search-mode-map (kbd "R") #'elfeed-update)
(define-key elfeed-search-mode-map (kbd "q") #'elfeed-kill-buffer)
(define-key elfeed-show-mode-map (kbd "S") #'elfeed-show-new-live-search)
(define-key elfeed-show-mode-map (kbd "f") #'elfeed-show-fetch-full-text)
(define-key elfeed-show-mode-map (kbd "w") #'elfeed-show-yank))
;;;; hl-todo
(with-eval-after-load 'hl-todo
(define-key hl-todo-mode-map (kbd "C-t p") #'hl-todo-previous)
(define-key hl-todo-mode-map (kbd "C-t n") #'hl-todo-next)
(define-key hl-todo-mode-map (kbd "C-t o") #'hl-todo-occur)
(define-key hl-todo-mode-map (kbd "C-t i") #'hl-todo-insert))
;; Projectile keybindings
(define-key fscotto/leader-map (kbd "p") 'projectile-command-map)
(with-eval-after-load 'projectile
(define-key projectile-command-map (kbd "v") #'fscotto/project-vterm)
(define-key projectile-command-map (kbd "g") #'fscotto/project-magit-status))
;;;; LSP
(defvar fscotto/lsp-map (make-sparse-keymap))
(autoload 'lsp-find-definition "lsp-mode" nil t)
(autoload 'lsp-find-type-definition "lsp-mode" nil t)
(autoload 'lsp-find-implementation "lsp-mode" nil t)
(autoload 'lsp-execute-code-action "lsp-mode" nil t)
(autoload 'lsp-rename "lsp-mode" nil t)
(autoload 'lsp-format-buffer "lsp-mode" nil t)
(autoload 'lsp-restart-workspace "lsp-mode" nil t)
(autoload 'consult-lsp-symbols "consult-lsp" nil t)
(autoload 'consult-lsp-diagnostics "consult-lsp" nil t)
(define-key fscotto/lsp-map (kbd "s") #'consult-lsp-symbols)
(define-key fscotto/lsp-map (kbd "e") #'consult-lsp-diagnostics)
(define-key fscotto/lsp-map (kbd "d") #'lsp-find-definition)
(define-key fscotto/lsp-map (kbd "D") #'lsp-find-type-definition)
(define-key fscotto/lsp-map (kbd "i") #'lsp-find-implementation)
(define-key fscotto/lsp-map (kbd "a") #'lsp-execute-code-action)
(define-key fscotto/lsp-map (kbd "r") #'lsp-rename)
(define-key fscotto/lsp-map (kbd "f") #'lsp-format-buffer)
(define-key fscotto/lsp-map (kbd "R") #'lsp-restart-workspace)
(defun fscotto/enable-lsp-keymap ()
"Enable LSP keybindings if LSP is active in the current buffer."
(when (and (bound-and-true-p lsp-mode)
(lsp-workspaces))
(local-set-key (kbd "C-c l") fscotto/lsp-map)))
(add-hook 'lsp-mode-hook #'fscotto/enable-lsp-keymap)
(add-hook 'lsp-after-initialize-hook #'fscotto/enable-lsp-keymap)
(add-hook 'lsp-after-open-hook #'fscotto/enable-lsp-keymap)
;;;; DAP
(defvar fscotto/dap-map (make-sparse-keymap)
"Keymap for DAP commands under C-c d.")
(autoload 'dap-debug "dap-mode" nil t)
(autoload 'dap-breakpoint-toggle "dap-mode" nil t)
(autoload 'dap-continue "dap-mode" nil t)
(autoload 'dap-next "dap-mode" nil t)
(autoload 'dap-step-in "dap-mode" nil t)
(autoload 'dap-step-out "dap-mode" nil t)
(autoload 'dap-restart-frame "dap-mode" nil t)
(autoload 'dap-disconnect "dap-mode" nil t)
(define-key fscotto/dap-map (kbd "d") #'dap-debug)
(define-key fscotto/dap-map (kbd "b") #'dap-breakpoint-toggle)
(define-key fscotto/dap-map (kbd "c") #'dap-continue)
(define-key fscotto/dap-map (kbd "n") #'dap-next)
(define-key fscotto/dap-map (kbd "i") #'dap-step-in)
(define-key fscotto/dap-map (kbd "o") #'dap-step-out)
(define-key fscotto/dap-map (kbd "r") #'dap-restart-frame)
(define-key fscotto/dap-map (kbd "q") #'dap-disconnect)
(defun fscotto/enable-dap-keymap ()
"Enable DAP keybindings if dap-mode is active in the current buffer."
(when (bound-and-true-p dap-mode)
(local-set-key (kbd "C-c d") fscotto/dap-map)))
(add-hook 'dap-mode-hook #'fscotto/enable-dap-keymap)
(add-hook 'dap-session-created-hook #'fscotto/enable-dap-keymap)
(add-hook 'dap-terminated-hook #'fscotto/enable-dap-keymap)
;;;; Go
(with-eval-after-load 'go-ts-mode
(define-key go-ts-mode-map (kbd "C-c m t") #'fscotto/go-mod-tidy)
(define-key go-ts-mode-map (kbd "C-c m d") #'fscotto/go-mod-download)
(define-key go-ts-mode-map (kbd "C-c t p") #'fscotto/go-test-package)
(define-key go-ts-mode-map (kbd "C-c t a") #'fscotto/go-test-module)
(define-key go-ts-mode-map (kbd "C-c t t") #'fscotto/go-test-current-test)
(define-key go-ts-mode-map (kbd "C-c d t") #'dap-debug))
(provide 'core/keybindings)
;;; keybindings.el ends here

View File

@@ -0,0 +1,15 @@
;; core-packages.el -*- lexical-binding: t; -*-
(require 'use-package)
(use-package package
:config
;; Setting repo priorities
(setq package-archive-priorities
'(("melpa-stable" . 2)
("MELPA" . 1)
("gnu" . 0)))
;; Setting repo URL
(setq package-archives
'(("melpa-stable" . "https://stable.melpa.org/packages/")
("MELPA" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/"))))

View File

@@ -0,0 +1,22 @@
;;; core-performance.el -*-
;; --- Startup speed tweaks ----------------------------------------------------
;; Temporarily increase GC threshold during init
(defvar fscotto/gc-cons-threshold-orig gc-cons-threshold)
(setq gc-cons-threshold (* 50 1000 1000)) ;; 50MB for init
;; Speedup file-name-handler during init
(defvar fscotto/file-name-handler-alist-orig file-name-handler-alist)
(setq file-name-handler-alist nil)
;; Restore after init
(add-hook 'emacs-startup-hook
(lambda ()
(setq gc-cons-threshold fscotto/gc-cons-threshold-orig)
(setq file-name-handler-alist fscotto/file-name-handler-alist-orig)
(garbage-collect)))
;; LSP responsiveness
(setq read-process-output-max (* 1024 1024)) ;; 1MB, utile per lsp-mode
(setq lsp-idle-delay 0.5) ;; meno ritardo prima che LSP aggiorni info
(setq inhibit-compacting-font-caches t)

View File

@@ -0,0 +1,79 @@
;;; core-ui.el -*- lexical-binding: t; -*-
;; Load default theme
(use-package sublime-themes
:ensure t)
(use-package soothe-theme
:ensure t)
(use-package nordic-night-theme
:ensure t)
(use-package timu-caribbean-theme
:ensure t)
(load-theme 'nordic-night t)
;; Setting default font
(set-frame-font "UbuntuSansMono Nerd Font 16" nil t)
;; Remove toolbar
(tool-bar-mode -1)
;; Remove menu
(menu-bar-mode -1)
;; Disable startup screen
(setq inhibit-startup-screen t)
;; Disable splash screen
(setq inhibit-splash-screen t)
;; Start all frames maximized
(add-to-list 'default-frame-alist '(fullscreen . maximized))
;; Remove scrollbar
(scroll-bar-mode -1)
;; Simple 'y' for 'yes' and 'n' for 'no'
(defalias 'yes-or-no-p 'y-or-n-p)
;; Set global value for paragraph witdh
(setq-default fill-column 120)
;; Stop Emacs from losing informations
(setq undo-limit 8000000)
(setq undo-strong-limit 12000000)
;; Smooth scroll
(setq scroll-step 3)
(setq ring-bell-function 'ignore)
;; Add column number in the status line
(column-number-mode)
;; View clock in the status line
(display-time)
;; Enable line numbers in the programming mode only
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
;; Enable line numbers in the configuration mode only
(add-hook 'conf-mode-hook 'display-line-numbers-mode)
;; Highlight keywords to remember the activity when coding.
(use-package hl-todo
:ensure t
:commands (global-hl-todo-mode)
:init (global-hl-todo-mode))
(setq hl-todo-keyword-faces
'(("TODO" . "#94e2d5")
("FIXME" . "#f38ba8")
("DEBUG" . "#cba6f7")
("GOTCHA" . "#eba0ac")
("STUB" . "#89b4fa")))
(provide 'ui)
;;; ui.el ends here

View File

@@ -0,0 +1,39 @@
;; c.el -*- lexical-binding: t; -*-
;; C / C++ fallback style (Linux-like)
(setq c-default-style "linux"
c-basic-offset 4
tab-width 8)
(add-hook 'c-mode-common-hook
(lambda ()
(setq indent-tabs-mode t)))
;; Tree-sitter C/C++
(setq c-ts-mode-indent-offset 4)
(setq c++-ts-mode-indent-offset 4)
(with-eval-after-load 'lsp
;; Clangd configurations
(setq lsp-clients-clangd-args
'("--background-index"
"--clang-tidy"
"--completion-style=detailed"
"--header-insertion=never"
"--header-insertion-decorators"
"--pch-storage=memory"
"--log=error"
"--ranking-model=heuristics"
"--malloc-trim"
"--limit-results=500"
"--limit-references=2000")))
(with-eval-after-load 'dap-mode
(require 'dap-cpptools))
(add-hook 'c-ts-mode-hook #'fscotto/disable-c-formatting)
(add-hook 'c-mode-hook #'fscotto/disable-c-formatting)
(provide 'c)
;;; c.el ends here

View File

@@ -0,0 +1,8 @@
;;; docker.el -*- lexical-binding: t; -*-
(use-package dockerfile-mode
:ensure t)
(provide 'docker)
;;; docker.el ends here

View File

@@ -0,0 +1,89 @@
;;=================================================================
;; Go Language Support
;;=================================================================
(use-package go-ts-mode
:ensure nil
:mode "\\.go\\'"
:hook
((go-ts-mode . lsp-deferred)
(go-ts-mode . fscotto/go-format-on-save)))
(use-package go-mod-ts-mode
:ensure nil
:mode
(("/go\\.mod\\'" . go-mod-ts-mode)
("/go\\.sum\\'" . go-mod-ts-mode))
:hook
((go-mod-ts-mode . lsp-deferred)
;; restart gopls only when go.mod/go.sum are saved (buffer-local)
(go-mod-ts-mode . (lambda ()
(add-hook 'after-save-hook
(lambda ()
(when (lsp-workspaces)
(lsp-restart-workspace)))
nil t)))))
(with-eval-after-load 'project
(add-to-list 'project-vc-extra-root-markers "go.mod"))
(with-eval-after-load 'lsp-mode
;; gopls settings (single source of truth)
(lsp-register-custom-settings
'(("gopls.staticcheck" t)
("gopls.gofumpt" t)
;; ("gopls.experimentalWorkspaceModule" t)
("gopls.expandWorkspaceToModule" t)
("gopls.directoryFilters" ["-vendor"])
("gopls.analyses.unusedparams" t)
("gopls.analyses.shadow" t)
("gopls.analyses.nilness" t)
("gopls.analyses.useany" t)
("gopls.env" ((GO111MODULE . "on"))))))
(with-eval-after-load 'flycheck
;; Usa golangci-lint in Go
(add-hook 'go-ts-mode-hook
(lambda ()
(setq-local flycheck-checker 'golangci-lint)
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
(flycheck-mode 1))))
(use-package dap-dlv-go
:after (dap-mode go-ts-mode))
(with-eval-after-load 'dap-dlv-go
;; Debug all tests in module
(dap-register-debug-template
"Go :: Debug all tests"
(list :type "go"
:request "launch"
:name "Go :: Debug all tests"
:mode "test"
:program "${workspaceFolder}"
:cwd "${workspaceFolder}"))
;; Debug tests in current package
(dap-register-debug-template
"Go :: Debug package tests"
(list :type "go"
:request "launch"
:name "Go :: Debug package tests"
:mode "test"
:program "${fileDirname}"
:cwd "${fileDirname}"))
;; Debug test at point
(dap-register-debug-template
"Go :: Debug test at point"
(list :type "go"
:request "launch"
:name "Go :: Debug test at point"
:mode "test"
:program "${fileDirname}"
:cwd "${fileDirname}"
:args (list "-test.run" "${input:testName}"))))
(add-hook 'dap-terminated-hook
(lambda (_)
(delete-other-windows)))

View File

@@ -0,0 +1,7 @@
;;; json.el -*- lexical-binding: t -*-
(use-package json-mode
:ensure t)
(provide 'json)
;;; json.el ends here

View File

@@ -0,0 +1,8 @@
;;; markdown.el -*- lexical-binding: t; -*-
(use-package markdown-mode
:ensure t
:mode ("README\\.md\\'" . gfm-mode)
:init (setq markdown-command "multimarkdown"))
(provide 'markdown)
;;; markdown.el ends here

View File

@@ -0,0 +1,46 @@
;;; org.el -*- lexical-binding: t; -*-
(use-package htmlize
:ensure t)
(use-package org
:init
(setq org-clock-mode-line-total 'today
org-fontify-quote-and-verse-blocks t
org-indent-mode t
org-return-follows-link t
org-startup-folded 'content
org-todo-keywords '((sequence "🆕(t)" "▶️(s)" "⏳(w)" "🔎(p)" "|" "✅(d)" "🗑(c)" "👨(g)")))
:config
(add-hook 'org-mode-hook 'org-indent-mode)
(add-hook 'org-mode-hook 'flyspell-mode))
(use-package org-bullets
:ensure t
:init
(setq org-bullets-bullet-list '("" "" "" "" ""))
:config
(add-hook 'org-mode-hook 'org-bullets-mode))
(use-package org-re-reveal
:ensure t
:init
(setq org-re-reveal-transition 'none
org-re-reveal-theme "dracula"))
(use-package ob-mermaid
:ensure t
:init
(setq ob-mermaid-cli-path "mmdc")
(org-babel-do-load-languages
'org-babel-load-languages
'((mermaid . t)
(scheme . t))))
;; Setting default directory for Org files
(setq org-directory "~/Remotes/pCloud/Org")
(provide 'org)
;;; org.el ends here

View File

@@ -0,0 +1,11 @@
(with-eval-after-load 'flycheck
(add-hook 'bash-ts-mode-hook 'flycheck-mode))
(use-package reformatter
:ensure t
:config
(reformatter-define shfmt-format
:program "shfmt"
:args '("-i" "2" "-ci")))
(add-hook 'bash-ts-mode-hook #'shfmt-format-on-save-mode)

View File

@@ -0,0 +1,8 @@
;;; yaml.el -*- lexical-binding: t; -*-
(use-package yaml-mode
:ensure t)
(provide 'yaml)
;;; yaml.el ends here

View File

@@ -0,0 +1,89 @@
;;functions to support syncing .elfeed between machines
;;makes sure elfeed reads index from disk before launching
(defun fscotto/elfeed-load-db-and-open ()
"Wrapper to load the elfeed db from disk before opening URL https://pragmaticemacs.wordpress.com/2016/08/17/read-your-rss-feeds-in-emacs-with-elfeed/
Created: 2016-08-17
Updated: 2025-06-13"
(interactive)
(elfeed)
(elfeed-db-load)
;; (elfeed-search-update--force)
(elfeed-update)
(elfeed-db-save))
(defun fscotto/project-root ()
"Return projectile project root or fallback to default-directory."
(if (featurep 'projectile)
(or (projectile-project-root) default-directory)
default-directory))
(defun fscotto/project-vterm ()
"Open vterm in project root."
(interactive)
(let ((default-directory (fscotto/project-root)))
(vterm)))
(defun fscotto/project-magit-status ()
"Open magit-status in project root."
(interactive)
(let ((default-directory (fscotto/project-root)))
(magit-status)))
(defun fscotto/magit-dispatch ()
"Load Magit if necessary and open magit-dispatch."
(interactive)
(require 'magit)
(call-interactively #'magit-dispatch))
(defun fscotto/disable-c-formatting ()
(setq-local lsp-enable-on-type-formatting nil))
;; Golang development support functions
(defun fscotto/go-format-on-save ()
"Format Go buffers on save using gofmt."
(add-hook 'before-save-hook #'lsp-format-buffer nil t))
(defun fscotto/go-mod-tidy ()
"Esegue go mod tidy nella root del progetto."
(interactive)
(let ((default-directory (project-root (project-current t))))
(compile "go mod tidy")))
(defun fscotto/go-mod-download ()
"Scarica i moduli Go."
(interactive)
(let ((default-directory (project-root (project-current t))))
(compile "go mod download")))
(defun fscotto/go-mod-after-save ()
(when (and (eq major-mode 'go-mod-ts-mode)
(lsp-workspaces))
(lsp-restart-workspace)))
(defun fscotto/go-test-package ()
"Run `go test` in the current package."
(interactive)
(let ((default-directory (project-root (project-current t))))
(compile "go test")))
(defun fscotto/go-test-module ()
"Run `go test ./...` in the current Go module."
(interactive)
(let ((default-directory (project-root (project-current t))))
(compile "go test ./...")))
(defun fscotto/go-test-current-test ()
"Run `go test -run` for the test at point."
(interactive)
(let* ((test-name (thing-at-point 'symbol t))
(default-directory (project-root (project-current t))))
(unless test-name
(user-error "No test name at point"))
(compile (format "go test -run '^%s$'" test-name))))
(defun fscotto/go-test-at-point ()
"Return Go test name at point."
(let ((sym (thing-at-point 'symbol t)))
(unless (and sym (string-prefix-p "Test" sym))
(user-error "No Go test at point"))
sym))

View File

@@ -0,0 +1,17 @@
;;; dashboard.el --- Startup dashboard -*- lexical-binding: t; -*-
(use-package dashboard
:ensure t
:init
(setq dashboard-startup-banner 'logo
dashboard-center-content t
dashboard-set-heading-icons t
dashboard-set-file-icons t
dashboard-items '((recents . 8)
(projects . 5)))
:config
(dashboard-setup-startup-hook))
(provide 'dashboard)
;;; misc-dashboard.el ends here

View File

@@ -0,0 +1,9 @@
;;; doom-modeline.el -*-
(use-package doom-modeline
:ensure t
:config
(setq doom-modeline-height 25
doom-modeline-bar-width 3
doom-modeline-project-detection 'projectile)
:init (doom-modeline-mode 1))

View File

@@ -0,0 +1,51 @@
;;; email.el -*-
(use-package mu4e
:ensure nil
;; :load-path "/usr/share/emacs/site-lisp/mu4e/"
:defer 20 ; Wait until 20 seconds after startup
:config
;; This is set to 't' to avoid mail syncing issues when using mbsync
(setq mu4e-change-filenames-when-moving t)
;; Refresh mail using isync every 10 minutes
(setq mu4e-update-interval (* 10 60))
(setq mu4e-get-mail-command "~/.emacs.d/scripts/email_sync.sh")
(setq mu4e-maildir "~/Maildir")
;; Configure email accounts
(setq mu4e-contexts
(list
;; Protonmail Account
(make-mu4e-context
:name "Protonmail"
:match-func
(lambda (msg)
(when msg
(string-prefix-p "/ProtonMailAccount" (mu4e-message-field msg :maildir))))
:vars '((user-mail-address . "fscottodisantolo@protonmail.com")
(user-full-name . "Fabio Scotto di Santolo")
(mu4e-drafts-folder . "/ProtonMailAccount/Drafts")
(mu4e-sent-folder . "/ProtonMailAccount/Sent")
(mu4e-refile-folder . "/ProtonMailAccount/All Mail")
(mu4e-trash-folder . "/ProtonMailAccount/Trash")))
;; iCloud Account
(make-mu4e-context
:name "iCloud Mail"
:match-func
(lambda (msg)
(when msg
(string-prefix-p "/iCloudAccount" (mu4e-message-field msg :maildir))))
:vars '((user-mail-address . "fscottodisantolo@icloud.com")
(user-full-name . "Fabio Scotto di Santolo")
(mu4e-drafts-folder . "/iCloudAccount/Drafts")
(mu4e-sent-folder . "/iCloudAccount/Sent Messages")
(mu4e-refile-folder . "/iCloudAccount/INBOX")
(mu4e-trash-folder . "/iCloudAccount/Junk")))))
(setq sendmail-program "/usr/bin/msmtp"
send-mail-function 'sendmail-send-it
message-sendmail-f-is-evil t
message-sendmail-extra-arguments '("--read-envelope-from")
message-send-mail-function 'message-send-mail-with-sendmail))

View File

@@ -0,0 +1,3 @@
(use-package nov
:ensure t
:mode ("\\.epub\\'" . nov-mode))

View File

@@ -0,0 +1,2 @@
(use-package i3wm-config-mode
:ensure t)

View File

@@ -0,0 +1,4 @@
(use-package pdf-tools
:ensure t
:config
(pdf-tools-install))

View File

@@ -0,0 +1,27 @@
;;; rss.el -*-
(use-package elfeed
:ensure t
:custom
(elfeed-enclosure-default-dir "~/Downloads/")
(elfeed-search-remain-on-entry t)
(elfeed-search-title-max-width 100)
(elfeed-search-title-min-width 30)
(elfeed-search-trailing-width 25)
(elfeed-show-truncate-long-urls t)
(elfeed-sort-order 'descending)
(elfeed-search-filter "+unread")
:hook
(elfeed-show-mode . visual-line-mode))
(use-package elfeed-org
:ensure t
:after elfeed
:custom
;; Optionally specify a number of files containing elfeed
;; configuration. If not set then the location below is used.
;; Note: The customize interface is also supported.
(rmh-elfeed-org-files (list "~/.emacs.d/elfeed.org")))
(with-eval-after-load 'elfeed
(elfeed-org))

View File

@@ -0,0 +1,4 @@
;;; terminal.el -*-
(use-package vterm
:ensure t)

View File

@@ -0,0 +1,16 @@
(use-package magit
:ensure t
:commands (magit-status magit-log)
:init
;; Entry point principale
(setq magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1)
:config
;; Performance & UX
(setq magit-refresh-status-buffer nil)
(setq magit-repository-directories
'(("~/Projects" . 2)
("~/Work" . 2))))
(provide 'vcs)
;;; vcs.el ends here

View File

@@ -0,0 +1,161 @@
;;; which-key.el -*-
(use-package which-key
:ensure t
:defer 1
:config
(which-key-mode)
(setq which-key-idle-delay 0.45
which-key-idle-secondary-delay 0.05
which-key-max-display-columns 3
which-key-max-description-length 45))
(with-eval-after-load 'which-key
;; --------------------------------------------------------------------------
;; Top-level prefixes
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
"C-c !" "Analyze"
"C-c o" "Open"
"C-c v" "Version control"
"C-c l" "LSP"
"C-c t" "TODO / Annotations"
"C-c b" "Buffers"
"C-c p" "Project"
"C-c d" "Debug"
"C-c g" "Git"
"C-c e" "Email / Elfeed")
;; --------------------------------------------------------------------------
;; Open (C-c o …)
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
"C-c o f" "RSS (Elfeed)"
"C-c o m" "mu4e (Email Client)"
"C-c o T" "Terminal (vterm)")
;; --------------------------------------------------------------------------
;; Version control
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
"C-c v g" "Magit status (legacy)")
(which-key-add-key-based-replacements
;; Core
"C-c g g" "Status"
"C-c g s" "Status"
;; "C-c g b" "Branch"
;; "C-c g c" "Commit"
"C-c g p" "Push / Pull"
"C-c g f" "Fetch"
"C-c g l" "Log"
"C-c g S" "Stash"
;; Files
"C-c g d" "Diff"
"C-c g D" "Diff (cached)"
"C-c g B" "Blame"
;; Rebase / Reset
"C-c g r" "Rebase"
"C-c g R" "Reset"
;; Remote
"C-c g y" "Show refs"
"C-c g o" "Browse remote")
;; --------------------------------------------------------------------------
;; Buffers
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
"C-x C-b" "ibuffer")
;; --------------------------------------------------------------------------
;; TODO / hl-todo
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
"C-t" "hl-todo"
"C-t p" "Previous TODO"
"C-t n" "Next TODO"
"C-t o" "Occur (list)"
"C-t i" "Insert TODO")
;; --------------------------------------------------------------------------
;; LSP (C-c l …)
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
;; Navigation
"C-c l d" "Go to definition"
"C-c l D" "Go to type definition"
"C-c l i" "Go to implementation"
;; Symbols / diagnostics
"C-c l s" "Workspace symbols"
"C-c l e" "Diagnostics"
;; Actions
"C-c l a" "Code actions"
"C-c l r" "Rename symbol"
"C-c l f" "Format buffer"
;; Control
"C-c l R" "Restart workspace")
;; --------------------------------------------------------------------------
;; Elfeed modes
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
"w" "Yank"
"R" "Update feeds"
"q" "Quit")
;; --------------------------------------------------------------------------
;; Debug / DAP
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
"C-c d d" "Start debug session"
"C-c d b" "Toggle breakpoint")
;; "C-c d c" "Continue"
;; "C-c d n" "Next"
;; "C-c d i" "Step in"
;; "C-c d o" "Step out")
;; --------------------------------------------------------------------------
;; Project (future)
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
;; Core
"C-c p p" "Switch project"
"C-c p f" "Find file"
"C-c p d" "Find directory"
"C-c p b" "Switch buffer"
"C-c p k" "Kill project buffers"
"C-c p r" "Recent files"
;; Search
"C-c p s" "Search"
"C-c p s g" "Grep (ripgrep)"
"C-c p s r" "Replace in project"
;; Actions
"C-c p c" "Compile"
"C-c p t" "Test"
"C-c p v" "Open term in project"
"C-c p e" "Edit project config"
"C-c p g" "Project Git status"
"C-c p x" "Open Terminal"
"C-c p 4" "Other Window"
"C-c p 5" "Other Frame"
"C-c p x 4" "Other Window"
;; Cache
"C-c p i" "Invalidate cache")
;; --------------------------------------------------------------------------
;; Cleanup annoying +prefix
;; --------------------------------------------------------------------------
(which-key-add-key-based-replacements
"+prefix" "Prefix"
"+lsp" "LSP"
"+debug" "Debug"
"+project" "Project"))

View File

@@ -0,0 +1,63 @@
;;; completion.el -*- lexical-binding: t; -*-
(use-package ivy
:ensure t
:config
(ivy-mode 1))
(use-package consult
:ensure t
:defer t)
(use-package company
:ensure t
:custom
(company-tooltip-align-annotations 't)
(company-minimum-prefix-length 1)
(company-idle-delay 0.1)
:hook (prog-mode . company-mode))
(with-eval-after-load 'company
(add-hook 'bash-ts-mode-hook 'company-mode))
;; Static analysis for code base
(use-package flycheck
:ensure t
:hook (prog-mode . flycheck-mode)
:config
(setq flycheck-check-syntax-automatically '(save mode-enabled)))
;; Snippets
(use-package yasnippet
:ensure t
:config
(setq yas/root-directory
(list "~/.emacs.d/snippets") yas-indent-line 'fixed)
(yas-global-mode))
(use-package orderless
:ensure t
:custom
(completion-styles '(orderless basic))
(completion-category-overrides '((file (styles partial-completion))))
(completion-pcm-leading-wildcard t)
:config
(setq ivy-re-builders-alist '((t . orderless-ivy-re-builder)))
(add-to-list 'ivy-highlight-functions-alist '(orderless-ivy-re-builder . orderless-ivy-highlight)))
(defun just-one-face (fn &rest args)
(let ((orderless-match-faces [completions-common-part]))
(apply fn args)))
(advice-add 'company-capf--candidates :around #'just-one-face)
(use-package smartparens
:ensure smartparens ;; install the package
:hook (prog-mode text-mode markdown-mode) ;; add `smartparens-mode` to these hooks
:config
;; load default config
(require 'smartparens-config))
(provide 'completion)
;;; completion.el ends here

View File

@@ -0,0 +1,24 @@
(use-package dap-mode
:ensure t
:after lsp-mode
:hook (lsp-mode . dap-mode)
:init
;; Enabling only some features
(setq dap-auto-configure-features '(sessions locals expressions repl))
:config
(dap-mode 1)
(dap-ui-mode 1)
(dap-ui-controls-mode 1)
;; Auto show breakpoints + REPL
(setq dap-ui-buffer-configurations
'(;; RIGHT SIDE — Debug data (like IntelliJ)
(dap-ui-locals . ((side . right) (slot . 1) (window-width . 0.30)))
(dap-ui-sessions . ((side . right) (slot . 2) (window-width . 0.30)))
(dap-ui-expressions . ((side . right) (slot . 3) (window-width . 0.30)))
;; BOTTOM — Console / REPL
(dap-ui-repl . ((side . bottom) (slot . 1) (window-height . 0.25)))
(dap-ui-console . ((side . bottom) (slot . 2) (window-height . 0.25)))))
;; Loading DAP adapters
;; For Python
(require 'dap-python)
(setq dap-python-debugger 'debugpy))

View File

@@ -0,0 +1,49 @@
;;; lsp.el -*- lexical-binding: t; -*-
(use-package lsp-mode
:ensure t
:commands (lsp lsp-deferred)
:hook
((c-mode
c-ts-mode
c++-mode
c++-ts-mode
python-mode
python-ts-mode
sh-mode
bash-ts-mode) . lsp-deferred)
:config
;; Performance
(setq lsp-enable-symbol-highlighting t
lsp-enable-snippet t
lsp-log-io nil
lsp-modeline-code-actions-enable nil
lsp-modeline-diagnostics-enable nil
lsp-signature-auto-activate nil
lsp-enable-on-type-formatting nil
lsp-completion-provider :capf
lsp-diagnostics-provider :flycheck
lsp-headerline-breadcrumb-enable nil
lsp-enable-indentation nil
;; Disable for huge projects
lsp-enable-file-watchers nil
lsp-idle-delay 0.5))
(use-package lsp-ui
:ensure t
:config
(setq lsp-ui-doc-enable t
lsp-ui-doc-delay 0.3
lsp-ui-sideline-enable t
lsp-ui-sideline-show-code-actions t))
(use-package consult-lsp
:ensure t
:after (consult lsp-mode)
:commands
(consult-lsp-symbols
consult-lsp-diagnostics))
(provide 'lsp)
;;; lsp.el ends here

View File

@@ -0,0 +1,25 @@
;;; project.el - lexical-binding *-*
(use-package projectile
:ensure t
:defer 1
:init
;; Root detection
(setq projectile-project-search-path '("~/Projects" "~/Work" "~/Progetti"))
(setq projectile-completion-system 'ivy)
:config
;; Performance
(setq projectile-enable-caching t)
(setq projectile-indexing-method 'hybrid)
(setq projectile-sort-order 'recently-active)
;; Projectile as single source of truth
(setq projectile-switch-project-action #'projectile-dired)
;; Use ripgrep if available
(when (executable-find "rg")
(setq projectile-generic-command "rg --files --hidden --glob '!.git'"))
;; Enable globally
(projectile-mode 1))
(provide 'project)
;;; project.el ends here

View File

@@ -0,0 +1,29 @@
;;; treesitter.el -*- lexical-binding: t; -*-
(use-package treesit
:ensure nil
:config
(setq treesit-font-lock-level 4)
(setq treesit-auto-install t)
(setq major-mode-remap-alist
'((c-mode . c-ts-mode)
(c++-mode . c++-ts-mode)
(go-mode . go-ts-mode)
(go-mod-mode . go-mod-ts-mode)
(python-mode . python-ts-mode)
(sh-mode . bash-ts-mode)))
(setq treesit-language-source-alist
'((bash "https://github.com/tree-sitter/tree-sitter-bash")
(c "https://github.com/tree-sitter/tree-sitter-c")
(cpp "https://github.com/tree-sitter/tree-sitter-cpp")
(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile")
(go "https://github.com/tree-sitter/tree-sitter-go")
(gomod "https://github.com/camdencheek/tree-sitter-go-mod")
(js "https://github.com/tree-sitter/tree-sitter-javascript")
(json "https://github.com/tree-sitter/tree-sitter-json")
(node "https://github.com/tree-sitter/node-tree-sitter")
(python "https://github.com/tree-sitter/tree-sitter-python"))))
(provide 'treesitter)
;;; treesitter.el ends here

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env sh
mbsync Gmail & pid1=$!
mbsync -a & pid1=$!
wait $pid1
mu index

View File

@@ -0,0 +1,3 @@
func main() {
$0
}

View File

@@ -0,0 +1 @@
fmt.Printf("%v\n", $0)

View File

@@ -0,0 +1,23 @@
func Test$0 {
tests := []struct {
name string
req string
expected string
}{
{
name: "happy path",
req: "answer to life, the universe and everything"
expected: "42"
}
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
actual := foo(t, tt.req)
assertEquals(t, tt.want, expected)
})
}
}

View File

@@ -0,0 +1,3 @@
#name : author
# --
@author <a href="mailto:torstein@skybert.net">Torstein Krause Johansen</a>$0

View File

@@ -0,0 +1,6 @@
#name : debug
# --
if (mLogger.isDebugEnabled()) {
mLogger.debug(String.format("${1:result}=%s", ${2:result}));
}
$0

View File

@@ -0,0 +1,31 @@
#name : dwmain
# --
package ${1:net.skybert.dw};
import io.dropwizard.Application;
import io.dropwizard.assets.AssetsBundle;
import io.dropwizard.configuration.SubstitutingSourceProvider;
import io.dropwizard.jetty.ConnectorFactory;
import io.dropwizard.jetty.HttpConnectorFactory;
import io.dropwizard.lifecycle.Managed;
import io.dropwizard.server.DefaultServerFactory;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
/**
* Main
*/
public class Main extends Application<${2:SkybertConf}> {
public static void main(final String[] args) throws Exception {
new Main().run(args);
}
@Override
public void run(
final $2 pConfiguration,
final Environment pEnvironment)
throws Exception {
$0
}
}

View File

@@ -0,0 +1,5 @@
#name : new method/function
# --
${1:public} ${2:void} ${3:update}(final ${4:String} ${5:pName}) {
$0
}

View File

@@ -0,0 +1,5 @@
#name : for (...; ...; ...) { ... }
# --
for (${1:Object} ${downcase-word 1} ; ${2:list}) {
$0
}

View File

@@ -0,0 +1,5 @@
#name : for loop with index
# --
for (int ${1:i} = 0; $1 < ${2:args.length}; $1${3:++}) {
$0
}

View File

@@ -0,0 +1,13 @@
#name : get/set/member variable
# --
private ${1:String} ${2:name};
public void set${2:$(capitalize text)}(final $1 p${2:$(capitalize text)}) {
$2 = p${2:$(capitalize text)};
}
public $1 get${2:$(capitalize text)}() {
return $2;
}
$0

View File

@@ -0,0 +1,6 @@
#name : if
# --
if (${1:result} ${2:!=} ${3:null}) {
$0
}

View File

@@ -0,0 +1,4 @@
#name : static import of isBlank
# --
import static org.apache.commons.lang.StringUtils.isBlank;
$0

View File

@@ -0,0 +1,21 @@
#name : junitwrapperfns
# --
private void assertTrue(final String pMessage, final boolean pConditition) {
Assertions.assertTrue(pConditition, pMessage);
}
private void assertFalse(final String pMessage, final boolean pConditition) {
Assertions.assertFalse(pConditition, pMessage);
}
private void assertNotNull(final String pMessage, final Object pActual) {
Assertions.assertNotNull(pActual, pMessage);
}
private void assertNull(final String pMessage, final Object pActual) {
Assertions.assertNull(pActual, pMessage);
}
private void assertEquals(final String pMessage, final Object pExpected, final Object pActual) {
Assertions.assertEquals(pExpected, pActual, pMessage);
}

View File

@@ -0,0 +1,5 @@
#name : main
# --
public static void main(String[] args) {
$0
}

View File

@@ -0,0 +1,3 @@
#name : np
# --
// NOPMD

View File

@@ -0,0 +1,3 @@
#name : get ObjectLoader
# --
$0ObjectLoader objectLoader = IOAPI.getAPI().getObjectLoader();

View File

@@ -0,0 +1,6 @@
#name : req
# --
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create($0))
.timeout(Duration.ofMillis(getResponseTimeout()))
.build();

View File

@@ -0,0 +1,3 @@
#name : res
# --
HttpResponse<String> response = mHttpClient.send(request, ofString());$0

View File

@@ -0,0 +1,3 @@
#name : sf
# --
String.format("%s", $0)

View File

@@ -0,0 +1,3 @@
#name : System.out.println
# --
System.out.println($0);

View File

@@ -0,0 +1,4 @@
@Test
void ${1:can}() throws Exception {
$0
}

View File

@@ -0,0 +1,12 @@
#name : try, catch & finally
# --
try {
$0
}
catch (${1:Exception} ${2:e}) {
mLogger.error($2);
}
finally {
}

View File

@@ -0,0 +1,8 @@
#name : try & catch
# --
try {
$0
}
catch (${1:Exception} ${2:e}) {
mLogger.error($2);
}

View File

@@ -0,0 +1,4 @@
#name : new array
# --
var ${1:myArray} = new Array();
$0

View File

@@ -0,0 +1,6 @@
#name : function
# --
function ${1:test}(${2:pValue}) {
$0
}

View File

@@ -0,0 +1,5 @@
#name : for (...; ...; ...) { ... }
# --
for (var ${1:i} = 0; $1 < ${2:args.length}; $1${3:++}) {
$0
}

View File

@@ -0,0 +1,6 @@
#name : if
# --
if (${1:s} == ${2:undefined}) {
$0
}

View File

@@ -0,0 +1,3 @@
#name : log
# --
console.log("$0");

View File

@@ -0,0 +1,3 @@
#name : a
# --
[${1}](${2})${0}

View File

@@ -0,0 +1,9 @@
#name : img snippet
# --
<img
class="centered"
src="${1:foo.png}"
alt="${2:alt img text}"
/>
$0

View File

@@ -0,0 +1,3 @@
# name : me
# --
[@skybert](https://skybert.net) ${1:says:}$0

View File

@@ -0,0 +1,17 @@
#name : pelican article
# --
title: ${1:`(s-replace "-" " " (file-name-base (buffer-file-name)))`}
date: ${2:`(format-time-string "%Y-%m-%d" (current-time))`}
category: ${3:`(file-name-nondirectory
(substring
(file-name-directory (buffer-file-name))
0
(- (length (file-name-directory (buffer-file-name))) 1)
))`}
tags: ${4:`(file-name-nondirectory
(substring
(file-name-directory (buffer-file-name))
0
(- (length (file-name-directory (buffer-file-name))) 1)
))`}
$0

View File

@@ -0,0 +1,6 @@
#name : src code snippet
# --
\`\`\`${1:text}
$0
\`\`\`

View File

@@ -0,0 +1,4 @@
#name : strong element
# --
<strong>${1:text}</strong>$0

View File

@@ -0,0 +1,3 @@
#name: cdata
# --
<![CDATA[$0]]>

View File

@@ -0,0 +1,8 @@
#name : cha
# --
<chapter xml:id="t_${1:$(replace-regexp-in-string " " "_" (downcase text))}">
<title>${1:My Title}</title>
<para>
$0
</para>
</chapter>

View File

@@ -0,0 +1,7 @@
#name : dep
# --
<dependency>
<groupId>$1</groupId>
<artifactId>$2</artifactId>
<version>$0</version>
</dependency>

View File

@@ -0,0 +1,10 @@
#name : diary
# --
<!--#include virtual="/ssi/header.shtml" -->
<h1>$1</h1>
<div id="main">
<p>
$0
</p>
</div>
<!--#include virtual="/ssi/footer.shtml" -->

View File

@@ -0,0 +1,6 @@
#name : exclusion
# --
<exclusion>
<groupId>$1</groupId>
<artifactId>$2</artifactId>
</exclusion>$0

View File

@@ -0,0 +1,8 @@
#name : exclusions
# --
<exclusions>
<exclusion>
<groupId>$1</groupId>
<artifactId>$2</artifactId>
</exclusion>$0
</exclusions>

View File

@@ -0,0 +1,3 @@
#name : incvar
# --
<xi:include href="local-variables.ebk" xpointer="${1:l-product-um}"/>$0

View File

@@ -0,0 +1,10 @@
#name : list
# --
<itemizedlist>
<listitem>
<para>
$0
</para>
</listitem>
</itemizedlist>

View File

@@ -0,0 +1,4 @@
#name : listi
# --
<listitem><para>$0</para></listitem>

View File

@@ -0,0 +1,3 @@
#name : lit
# --
<literal>$0</literal>

View File

@@ -0,0 +1,5 @@
#name : ol with a li
# --
<ol>
<li>$0</li>
</ol>

Some files were not shown because too many files have changed in this diff Show More