12 Commits

Author SHA1 Message Date
4d9c134f04 add Gandi zone info input + sync br/lorien home files 2024-09-02 20:45:54 +02:00
c1750624c9 add engines alias 2024-07-27 09:21:17 +02:00
e177a0716f improve more/less 2024-07-27 09:20:08 +02:00
6aed1cfbfd emacs: use vundo instead of undo-tree, .bashrc: cleanup. 2024-03-24 19:47:07 +01:00
cc5ae859a0 config lsp-ui-doc, etc... (see comments)
- configure lsp-ui-doc
- separate multiple cursor section
- Makefile-mode: Change fill-column to high, to prevent stupid indent
- Fix c-mode "/*" extra space on <return>
2024-03-02 09:45:55 +01:00
79955bb355 base.sh: add readline support for interective mode 2024-02-19 12:09:20 +01:00
b0f1f53865 Add negative decimal input, regex for prefixes, bits per int detection 2024-02-01 09:34:49 +01:00
f1fe945ecd add long options example 2024-01-31 13:25:03 +01:00
30a2954514 Fix bin() output and split(); add padding option. 2024-01-31 13:10:42 +01:00
d26c60e565 add ~/.local/bin in PATH 2024-01-26 07:54:34 +01:00
512c08ea31 remove less --auto-buffers option 2024-01-25 17:46:16 +01:00
4a14195bcd add bashrc.root 2024-01-23 09:52:04 +01:00
9 changed files with 665 additions and 194 deletions

View File

@@ -14,6 +14,31 @@
CMDNAME=${0##*/} # script name
# some default values (blocks separator padchar)
# Attention: For output base 10, obase is 1
declare -i ibase=0 obase=0 padding=0 prefix=1 ogroup=0 intbits
# find out int size (bits) - suppose 2-complement, and 8 bits char
printf -v _b "%x" -1
(( intbits = ${#_b} * 4 ))
declare -rA _bases=( # -f/-b accepted values
[2]=2 [b]=2 [B]=2
[8]=8 [o]=8 [O]=8
[10]=10 [d]=10 [D]=10
[16]=16 [h]=16 [H]=16
[a]=-1 [g]=-1
)
declare -A _pad=( # group separator
[2]=" " [8]=" " [10]="," [16]=" "
)
declare -rA _ogroup=( # group size
[2]=8 [8]=3 [10]=3 [16]=4
)
declare -rA _oprefix=( # output prefix
[2]="2#" [8]="0" [10]="" [16]="0x"
)
usage() {
printf "usage: %s [OPTIONS] [NUMBER]...\n" "$CMDNAME"
printf "Use '%s -h' for more help\n" "$CMDNAME"
@@ -22,13 +47,14 @@ usage() {
help() {
cat << _EOF
usage: $CMDNAME [OPTIONS] [NUMBER]...
-f, --from=BASE input base. Default is "g"
-t, --to=BASE output base. Default is "a"
-2, -8, -d, -x equivalent to -t2, -t8, -t10, -t16"
-f, --from=BASE input base, see BASE below. Default is "g"
-t, --to=BASE output base, see BASE below. Default is "a"
-b, -o, -d, -x equivalent to -t2, -t8, -t10, -t16"
-g, --group=[SEP] group output (see OUTPUT below)
-0, --padding Not implemented. 0-pad output on block boundary (implies -g)
-n, --noprefix Remove base prefixes in output
-p, --padding 0-pad output on block boundary (implies -g)
-n, --noprefix remove base prefixes in output
-h, --help this help
-- end of options
$CMDNAME output the NUMBERS arguments in different bases. If no NUMBER is
given, standard input will be used.
@@ -40,67 +66,75 @@ BASE
16, h, H, 0x hexadecimal
a, g all/any: Default, guess format for '-f', output all
bases for '-t'
INPUT NUMBER
If input base is not specified, some prefixes are supported.
'b' or '2/' for binary, '0', 'o' or '8/' for octal, '0x', 'x' or
'16/' for hexadecimal, and 'd' or '10/' for decimal.
If no prefix, decimal is assumed.
If no above prefix is found, decimal is assumed.
Decimal input may be signed or unsigned, with limits imposed by current
Bash (here: $intbits bits).
OUTPUT
By default, output is the input number converted in the 4 supported
bases (16, 10, 8, 2, in this order, separated by one tab character.
Decimal output is always unsigned.
By default, the input number is shown converted in the 4 supported
bases (16, 10, 8, 2, in this order), separated by one tab character.
Without '-n' option, all output numbers but decimal will be prefixed:
'2#' for binary, '0' for octal, '0x' for hexadecimal, making them
usable for input in some otilities such as bash(1).]
With '-g' option, number digits will be grouped by 3 (octal,
decimal), or 4 (binary, hexadecimal)\n. If no SEP character is given,
decimal), 4 (hexadecimal), or 8 (binary). If no SEP character is given,
the separator will be ',' (comma) for decimal, space otherwise.
This option may be useless if default output, with multiple numbers
This option may be useless for default output, with multiple numbers
on one line.
The '-0' option will left pad with '0' (zeros) to a group boundary.
The '-p' option add 0 padding up to the base grouping boundary.
EXAMPLES
Converting number in hexadecimal, decimal, octal, and binary, with or without
prefixes. Here, '\t' separator is shown as space:
$ $CMDNAME 0
0x0 0 0 2#0
$ $CMDNAME 123456
2#11110001001000000 0361100 123456 0x1e240
$ $CMDNAME -n 123456
11110001001000000 361100 123456 1e240
$ $CMDNAME -ng2 012345
1 0100 1110 0101
$ $CMDNAME -n2 012345
1 0100 1110 0101
0x1e240 123456 0361100 2#11110001001000000
$ $CMDNAME -n 2/100
4 4 4 100
$ $CMDNAME -n 0x1e240
1e240 123456 361100 11110001001000000
Binary output, no prefix, grouped output:
$ $CMDNAME -bng 0x1e240
1 11100010 01000000
Negative input (decimal only):
$ $CMDNAME -x -- -1
0xffffffffffffffff
Input base indication, left padding binary output, no prefix:
$ $CMDNAME -nbp -f8 361100
00000001 11100010 01000000
Set group separator. Note that the separator *must* immediately follow the '-g'
option, without spaces:
$ $CMDNAME -nxg: 123456
1:e240
Long options, with separator and padding:
$ $CMDNAME --to=16 --noprefix --padding --group=: 12345
0001:e240
TODO
Add option for signed/unsigned integer output.
Remove useless octal output ?
_EOF
}
# some default values (blocks separator padchar)
declare -i ibase=0 obase=0 padding=0 noprefix=0 ogroup=0
declare -rA _bases=(
[2]=2 [b]=2 [B]=2
[8]=8 [o]=8 [O]=8 [0]=8
[10]=10 [d]=10 [D]=10
[16]=16 [h]=16 [H]=16 [0x]=16
[a]=-1 [g]=-1
)
declare -A _pad=(
[2]=" " [8]=" " [10]="," [16]=" "
)
declare -rA _ogroup=(
[2]=4 [8]=3 [10]=3 [16]=4
)
declare -rA _oprefix=(
[2]="2#" [8]="0" [10]="" [16]="0x"
)
zero_pad() {
local base="$1" str="$2"
local str="$1"
local -i n=${_ogroup[$base]}
local n="$1" str="$2"
#printf "str=$str #=${#str}" >&2
while (( ${#str} < $2 )); do
str="0$str"
done
printf "%s" "$str"
printf "%0.*d%s" $(( n - ${#str} % n)) 0 "$str"
}
split() {
@@ -108,25 +142,32 @@ split() {
local res="$str" sep=${_pad[$base]}
local -i n=${_ogroup[$base]}
(( padding )) && str=$(zero_pad "${_ogroup[$base]}" "$str")
if (( ogroup )); then
res=""
while (( ${#str} )); do
if (( ${#str} < n )); then
str=$(zero_pad "$str" $n)
if (( ${#str} <= n )); then # finished
res="${str}${res:+$sep$res}"
break
fi
res="${str: -$n}${res:+$sep$res}"
str="${str:0:-$n}"
res="${str: -n}${res:+$sep$res}"
str="${str:0:-n}"
done
fi
printf "%s" "$res"
}
bin() {
local n bits=""
for (( n = $1 ; n > 0 ; n >>= 1 )); do
bits=$((n&1))$bits
local str=""
local -i n dec="$1"
# take care of negative numbers, as >> operator keeps the sign.
# 'intbits' is size of integer in bits in current shell.
for (( n = 0 ; dec && (n < intbits); n++ )); do
str="$(( dec & 1 ))$str"
(( dec >>= 1 ))
done
printf "%s\n" "${bits-0}"
printf "%s\n" "${str:-0}"
}
hex() {
@@ -145,7 +186,7 @@ declare -a args=()
parse_opts() {
# short and long options
local sopts="f:t:28dxg::pnh"
local sopts="f:t:bodxg::pnh"
local lopts="from:,to:,group::,padding,noprefix,help"
# set by options
local tmp=""
@@ -174,9 +215,9 @@ parse_opts() {
fi
shift
;;
"-2") obase=2 ;;
"-8") obase=8 ;;
"-d") obase=10 ;;
"-b") obase=2 ;;
"-o") obase=8 ;;
"-d") obase=1 ;;
"-x") obase=16 ;;
"-g"|"--group")
ogroup=1
@@ -185,47 +226,45 @@ parse_opts() {
fi
shift
;;
"-p"|"--padding") padding=1 ;;
"-n"|"--noprefix") noprefix=1 ;;
"-p"|"--padding") ogroup=1; padding=1 ;;
"-n"|"--noprefix") prefix=0 ;;
"-h"|"--help") help ; exit 0 ;;
"--") shift; break ;;
*) usage; echo "Internal error [$1]!" >&2; exit 1 ;;
esac
shift
done
# parse remaining arguments
if (($# > 0)); then # type
# next are numbers to convert, if any
if (($# > 0)); then
args=("$@")
fi
}
# shellcheck disable=SC2317
addprefix() {
local base="$1" number="$2"
local prefix=""
(( noprefix )) || prefix="${_oprefix[$base]}"
printf "%s%s" "$prefix" "$number"
local base="$1" number="$2" _prefix=""
if (( prefix )); then
if [[ $base != 8 || $number != "0" ]]; then
_prefix="${_oprefix[$base]}"
fi
fi
printf "%s%s" "$_prefix" "$number"
}
stripprefix() {
local number="$1"
number=${number#0x}
number=${number#[bodx0]}
number=${number#0}
number=${number#*/}
printf "%s" "$number"
[[ $1 =~ ^(0x|b|o|d|x|.*/) ]]
printf "%s" "${1#"${BASH_REMATCH[1]}"}"
}
guessbase() {
local input="$1"
local -i base=0
if [[ $input =~ ^b || $input =~ ^2/ ]]; then
if [[ $input =~ ^(b|2/) ]]; then
base=2
elif [[ $input =~ ^0x || $input =~ ^x || $input =~ ^16/ ]]; then
elif [[ $input =~ ^(0x|x|16/) ]]; then
base=16
elif [[ $input =~ ^0 || $input =~ ^o || $input =~ ^8/ ]]; then
elif [[ $input =~ ^(0|o|8/) ]]; then
base=8
elif [[ $input =~ ^d || $input =~ ^10/ ]]; then
elif [[ $input =~ ^(d|10/) ]]; then
base=10
fi
return $(( base ? base : 10 ))
@@ -240,7 +279,9 @@ doit() {
fi
inum=$(stripprefix "$number")
(( decval = "$base#$inum" )) # input value in decimal
# convert input value to decimal
(( base == 10 )) && (( decval = inum ))
(( base != 10 )) && (( decval = "$base#$inum" ))
# mask for desired output: 1=decimal, others are same as base
if (( ! _obase )); then
@@ -270,7 +311,7 @@ doit() {
parse_opts "$@"
if ! (( ${#args[@]} )); then
while read -ra line; do
while read -era line; do
for input in "${line[@]}"; do
doit "ibase" "$input"
done

88
config/etc/named.conf Normal file
View File

@@ -0,0 +1,88 @@
; raoult.com named.conf (gandi.net)
; SOA looks ignored when setting gandi DNS
@ 3600 IN SOA ns1.gandi.net. hostmaster.gandi.net. (
1725266688 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1h)
604800 ; expire (1 week)
3600 ; minimum (1h)
)
;;; ---------------------------------- copy from here
; IP addresses
@ 3600 IN A 82.64.229.101
moreac 3600 IN A 82.67.122.150
; forgot what it is
@ 3600 IN TXT "google-site-verification=I7AEHSueTj0mpbBvL4QA3WKaPTfBiM0_6N8Var0UpU8"
; subdomains
www 3600 IN CNAME raoult.com.
home 3600 IN CNAME raoult.com.
devs 3600 IN CNAME raoult.com.
ebooks 3600 IN CNAME raoult.com.
; applications
dav 3600 IN CNAME raoult.com.
git 3600 IN CNAME raoult.com.
webtrees 3600 IN CNAME raoult.com.
; hostnames
idril 3600 IN CNAME raoult.com.
arwen 3600 IN CNAME raoult.com.
idefix 3600 IN CNAME moreac.raoult.com.
; old shared
locations 3600 IN CNAME raoult.com.
marcel 3600 IN CNAME raoult.com.
xavier 3600 IN CNAME raoult.com.
;;; ---------------------------------- end of Gandi DNS records
;;;;; default gandi.net entries
; @ 10800 IN A 217.70.184.38
; @ 10800 IN MX 10 spool.mail.gandi.net.
; @ 10800 IN MX 50 fb.mail.gandi.net.
; @ 10800 IN TXT "v=spf1 include:_mailcust.gandi.net ?all"
; _imap._tcp 10800 IN SRV 0 0 0 .
; _imaps._tcp 10800 IN SRV 0 1 993 mail.gandi.net.
; _pop3._tcp 10800 IN SRV 0 0 0 .
; _pop3s._tcp 10800 IN SRV 10 1 995 mail.gandi.net.
; _submission._tcp 10800 IN SRV 0 1 465 mail.gandi.net.
; gm1._domainkey 10800 IN CNAME gm1.gandimail.net.
; gm2._domainkey 10800 IN CNAME gm2.gandimail.net.
; gm3._domainkey 10800 IN CNAME gm3.gandimail.net.
;
; webmail 10800 IN CNAME webmail.gandi.net.
; www 10800 IN CNAME webredir.vip.gandi.net.
;;;;; old freenom
; raoult.com. 300 IN SOA ns01.freenom.com. soa.freenom.com. (
; 1725254393 ; serial
; 10800 ; refresh (3 hours)
; 3600 ; retry (1 hour)
; 604800 ; expire (1 week)
; 3600 ; minimum (1 hour)
; )
; raoult.com. 300 IN NS ns02.freenom.com.
; raoult.com. 300 IN NS ns04.freenom.com.
; raoult.com. 300 IN NS ns03.freenom.com.
; raoult.com. 300 IN NS ns01.freenom.com.
; raoult.com. 3600 IN TXT "google-site-verification=I7AEHSueTj0mpbBvL4QA3WKaPTfBiM0_6N8Var0UpU8"
;;;;; domain lists
; raoult.com
; www.raoult.com
; home.raoult.com
; arwen.raoult.com
; dav.raoult.com
; devs.raoult.com
; ebooks.raoult.com
; git.raoult.com
; locations.raoult.com
; marcel.raoult.com
; webtrees.raoult.com
; xavier.raoult.com

View File

@@ -15,4 +15,5 @@
# This imply a duplicate "$HOME/bin" in PATH, as we do everything in .bashrc.$user.
# Having this ~/.bash_profile will avoid the execution of ~/.profile
# shellcheck disable=SC1091
[ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"

View File

@@ -15,7 +15,7 @@
# i.e., add at the end of .bashrc:
# [ -f "$HOME/.bashrc.$USER" ] && . "$HOME/.bashrc.$USER"
#
# Debian default ~/.profile does:
# Debian default ~/.profile usually does:
# 1) source .bashrc if it exists
# 2) add "$HOME"/bin in PATH
# This imply a duplicate "$HOME/bin" in PATH, as we do everything here.
@@ -78,10 +78,12 @@ _var_append() {
}
# adjust PATH. Below paths will be added at beginning.
_lpath=("$HOME/bin/$(uname -s)-$(uname -m)"
"$HOME/bin"
_lpath=("$HOME/bin/$(uname -s)-$(uname -m)" # architecture specific
"$HOME/bin" # user scripts
"$HOME/.local/bin" # pip venv
#"$HOME/.cargo/bin"
"/usr/local/bin")
"/usr/local/bin"
)
# loop array in reverse order. Note: We do not test for path existence and add it
# unconditionally, to avoid automounter interference.
@@ -96,13 +98,16 @@ _var_del PATH /snap/bin
# enable core file
ulimit -Sc 102400 # in 1024 bytes, 100Mb
# ... and set PAGER to less (for man(1) and others)
# Set pager: "less" is prefered over "more".
if hash less 2>/dev/null; then
export PAGER=less
# do not clear screen after "less", exit immediately if one page only
export LESS="-XFB"
# ... and just alias more... to less ;-)
export LESS="--quit-if-one-screen --quit-at-eof --no-init"
alias more=less
else
export MORE="--exit-on-eof --silent"
export PAGER=more
alias less=more
fi
# no output split for dc and bc / make bc silent
@@ -130,7 +135,8 @@ e() {
$VISUAL "$@"
}
export -f e
if hash emacs 2>/dev/null; then
if hash emacs 2>/dev/null; then # look for Emacs...
# uncomment below to use full emacs
#export EDITOR=emacs
# ... OR: uncomment below to use emacsclient
@@ -142,8 +148,7 @@ if hash emacs 2>/dev/null; then
alias emacs="emacsclient -c"
#alias crontab="VISUAL=emacsclient crontab -e"
#alias crontab="emacs-crontab.sh"
else
# emacs clones, then vim/vi, then... whatever left.
else # ... or clones, vim/vi, etc...
_VISUALS=(zile jed mg e3em vim vi nano ed)
for e in "${_VISUALS[@]}"; do
@@ -156,8 +161,7 @@ else
fi
export EDITOR=$VISUAL
# look for a pdf viewer
for _pdfviewer in qpdfview atril; do
for _pdfviewer in atril qpdfview; do # look for a pdf viewer
if hash "$_pdfviewer" 2>/dev/null; then
# shellcheck disable=SC2139
alias acroread="$_pdfviewer"
@@ -189,7 +193,7 @@ export QUOTING_STYLE=literal
# avoid these stupid systemd defaults (horizontal scroll and pager)
alias systemctl="systemctl --no-pager --full"
# useful aliases/functions
# aliases/functions for usual commands (ls, history, grep...)
alias l='ls -F'
alias ls='ls -F'
alias l1='ls -1F'

View File

@@ -65,13 +65,11 @@ _vardir() {
# shellcheck disable=SC2139
alias "$_a"="$_x"
}
#_vardir AOC aoc + ~/dev/advent-of-code # Advent of code
_vardir WCHESS wchess - ~/dev/www/crd/chess # raoult.com chess
_vardir CHESS chess + ~/dev/brchess # brchess
_vardir TOOLS tools - ~/dev/tools # tools
_vardir BRLIB brlib - ~/dev/brlib # brlib
#_vardir EUD eud + ~/dev/eudyptula # eudyptula
_vardir DEV dev - ~/dev # dev
_vardir CHESS chess + ~/dev/brchess # brchess
_vardir ENGINES engines - ~/dev/chess-engines # chess engines
_vardir TOOLS tools - ~/dev/tools # tools
_vardir BRLIB brlib - ~/dev/brlib # brlib
_vardir DEV dev - ~/dev # dev
# Indent style for emacs
# Local Variables:

View File

@@ -65,13 +65,14 @@ _vardir() {
# shellcheck disable=SC2139
alias "$_a"="$_x"
}
_vardir AOC aoc + ~/dev/advent-of-code # Advent of code
_vardir WCHESS wchess - ~/dev/www/crd/chess # raoult.com chess
_vardir CHESS chess + ~/dev/brchess # brchess
_vardir TOOLS tools - ~/dev/tools # tools
_vardir BRLIB brlib - ~/dev/brlib # brlib
_vardir EUD eud + ~/dev/eudyptula # eudyptula
_vardir DEV dev - ~/dev # dev
_vardir AOC aoc + ~/dev/advent-of-code # Advent of code
_vardir WCHESS wchess - ~/dev/www/crd/chess # raoult.com chess
_vardir CHESS chess + ~/dev/brchess # brchess
_vardir ENGINES engines - ~/dev/chess-engines # chess engines
_vardir TOOLS tools - ~/dev/tools # tools
_vardir BRLIB brlib - ~/dev/brlib # brlib
_vardir EUD eud + ~/dev/eudyptula # eudyptula
_vardir DEV dev - ~/dev # dev
# Indent style for emacs
# Local Variables:

211
config/home/bashrc.root Normal file
View File

@@ -0,0 +1,211 @@
#!/usr/bin/env bash
#
# ~/.bashrc.root - root bash startup
#
# (C) Bruno Raoult ("br"), 2001-2024
# Licensed under the GNU General Public License v3.0 or later.
# Some rights reserved. See COPYING.
#
# You should have received a copy of the GNU General Public License along with this
# program. If not, see <https://www.gnu.org/licenses/gpl-3.0-standalone.html>.
#
# SPDX-License-Identifier: GPL-3.0-or-later <https://spdx.org/licenses/GPL-3.0-or-later.html>
#
# Usage: to be invoked from .bashrc.
# i.e., add at the end of .bashrc:
# [ -f "$HOME/.bashrc.$USER" ] && . "$HOME/.bashrc.$USER"
#
# Debian default ~/.profile usually does:
# 1) source .bashrc if it exists
# 2) add "$HOME"/bin in PATH
# This imply a duplicate "$HOME/bin" in PATH, as we do everything here.
# Better to have a ~/.bash_profile with the lines above.
# _var_del() - remove an element from a colon-separated list.
# $1: name (reference) of a colon separated list
# $2: element to remove (string)
#
# _var_del() removes every occurrence of $2, if there are more than 1,
# and leaves $1 unchanged if $2 is not present.
#
# Example:
# With VAR's value being "foo:bar:quax:bar". Using "_var_del VAR bar" will
# leave VAR with the value "foo:quax".
_var_del() {
local -n _p_del=$1
local _l=":$_p_del:"
while [[ $_l =~ :$2: ]]; do
_l=${_l//:$2:/:}
done
_l=${_l%:}
_l=${_l#:}
_p_del="$_l"
}
# _var_prepend() - prepend element to colon-separated variable.
# $1: variable name (reference)
# $2: element to add (string)
#
# Any occurrence of $2 in $1 is first removed, then $2 is added at $1 beginning.
#
# Example:
# With VAR's value being "foo:bar:quax:bar". Using "_var_prepend VAR bar"
# will leave VAR with the value "bar:foo:quax".
_var_prepend() {
local -n _p_prepend=$1
_var_del _p_prepend "$2"
[[ -z $_p_prepend ]] && _p_prepend="$2" && return
_p_prepend="$2:$_p_prepend"
}
# _var_append() - append element to colon-separated variable.
# $1: variable name (reference)
# $2: element to add (string)
#
# Any occurrence of $2 in $1 is first removed, then $2 is added at $1 end.
#
# Example:
# With VAR's value being "foo:bar:quax:bar". Using "_var_append VAR bar"
# will leave VAR with the value "foo:quax:bar".
_var_append() {
local -n _p_append=$1
_var_del _p_append "$2"
[[ -z $_p_append ]] && _p_append="$2" && return
_p_append="$_p_append:$2"
}
# adjust PATH. Below paths will be added at beginning.
_lpath=("$HOME/bin/$(uname -s)-$(uname -m)"
"$HOME/bin"
"/usr/local/bin")
# loop array in reverse order. Note: We do not test for path existence and add it
# unconditionally, to avoid automounter interference.
for (( _i = ${#_lpath[@]} - 1; _i >= 0; --_i )); do
_var_prepend PATH "${_lpath[_i]}"
done
unset _lpath
# enable core file
ulimit -HSc 102400 # in 1024 bytes - Really cannot use KiB :-)
# ... and set PAGER to less (for man(1) and others)
if hash less 2>/dev/null; then
export PAGER=less
# do not clear screen after "less", exit immediately if one page only
export LESS="-XFB"
# ... and just alias more... to less ;-)
alias more=less
fi
# no output split for dc and bc / make bc silent
export DC_LINE_LENGTH=0
export BC_LINE_LENGTH=0
export BC_ENV_ARGS=--quiet
# both ubuntu and debian assume we want colors if TERM contains "color"
# this is surely not true, as TERM is often forced by terminal emulator
# shellcheck disable=SC2154
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# trim prompt path
export PROMPT_DIRTRIM=3
# find a suitable editor
e() {
$VISUAL "$@"
}
export -f e
# no Emacs for root
# emacs clones, then vim/vi, then... whatever left.
_VISUALS=(zile mg jed vim vi nano ed)
for e in "${_VISUALS[@]}"; do
if hash "$e" 2>/dev/null; then
export VISUAL="$e"
break
fi
done
unset _VISUALS
export EDITOR=$VISUAL
# append to the history file, don't overwrite it
shopt -s histappend
# write history after each command
export PROMPT_COMMAND="history -a"
# Add timestamp in history
export HISTTIMEFORMAT="%d/%m %H:%M "
# ignore history dups, delete all previous dups
export HISTCONTROL="ignorespace:ignoredups:erasedups"
# ignore these in history
export HISTIGNORE="history *:h:hl:hll:hlll"
# history size
HISTSIZE=5000
HISTFILESIZE=5000
# remove new stupid Debian "ls" quoting, and colors...
# Many complains, one of them:
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813164#226
export QUOTING_STYLE=literal
[[ -v BASH_ALIASES[ls] ]] && unalias ls
# aliases/functions for ls and history
alias l='ls -F'
alias ls='ls -F'
alias l1='ls -1F'
alias la='ls -AF'
alias ll='ls -lF'
alias lla='ls -lAF'
alias ldl='ls -l | grep ^d'
[[ -v BASH_ALIASES[lrt] ]] && unalias lrt
lrt() {
local -i _l=20
if (( $# > 0 )) && [[ $1 =~ [[:digit:]]+ ]]; then
_l="$1"
shift
fi
# shellcheck disable=2012
ls -lrt "${1:-.}" | tail -"$_l"
}
[[ -v BASH_ALIASES[lart] ]] && unalias lart
lart() {
local -i _l=20
if (( $# > 0 )) && [[ $1 =~ [[:digit:]]+ ]]; then
_l="$1"
shift
fi
# shellcheck disable=2012
ls -laFrt "${1:-.}" | tail -"$_l"
}
alias h="history 10" # short
alias hl="history 25" # long
alias hll="history 100" # very long
alias hlll="history" # all history
alias grep='grep --color=auto' # add colors to grep
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
# misc aliases
alias fuck='sudo $(history -p \!\!)'
alias diff='diff -u'
# Indent style for emacs
# Local Variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indentation: 4
# indent-tabs-mode: nil
# comment-column: 32
# End:

View File

@@ -15,6 +15,8 @@
;; (require 'use-package)
(package-initialize)
(setq use-package-always-ensure t)
;; (setq package-check-signature nil)
(use-package delight :ensure t)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
;;(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
@@ -75,6 +77,8 @@
(defun risky-local-variable-p (sym &optional _ignored) "Zoba SYM." nil)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; swap modifier keysyms (japanese keyboard)
;; Done in .xmodmap
;;
;; windows key (super) becomes hyper
;;(setq x-super-keysym 'hyper)
;; alt key (meta) becomes super
@@ -253,23 +257,33 @@ Return new LIST-VAR value."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ggtags
(use-package ggtags
:ensure t
:diminish ggtags-mode
:diminish "gg"
:disabled t
:defer t
;; :defer t
:after cc-mode
:init
(setq ggtags-global-window-height 28
ggtags-enable-navigation-keys nil)
(after cc-mode (add-hook 'c-mode-common-hook #'ggtags-mode))
(add-hook 'c-mode-common-hook
(lambda ()
(when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
(ggtags-mode 1))))
;;(after cc-mode (add-hook 'c-mode-common-hook #'ggtags-mode))
:config
(bind-keys :map ggtags-mode-map
("C-c g s" . ggtags-find-other-symbol)
("C-c g h" . ggtags-view-tag-history)
("C-c g r" . ggtags-find-reference)
("C-c g f" . ggtags-find-file)
("C-c g c" . ggtags-create-tags)
("C-c g u" . ggtags-update-tags)
;;("C-c g s" . ggtags-find-other-symbol)
;;("C-c g h" . ggtags-view-tag-history)
;;("C-c g r" . ggtags-find-reference)
;;("C-c g f" . ggtags-find-file)
;;("C-c g c" . ggtags-create-tags)
;;("C-c g u" . ggtags-update-tags)
("H-g s" . ggtags-find-other-symbol)
("H-g h" . ggtags-view-tag-history)
("H-g r" . ggtags-find-reference)
("H-g f" . ggtags-find-file)
("H-g c" . ggtags-create-tags)
("H-g u" . ggtags-update-tags)
("M-," 'pop-tag-mark)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; projectile
@@ -277,6 +291,7 @@ Return new LIST-VAR value."
(use-package projectile
;;:diminish projectile-mode
:diminish " prj"
;; :delight
:ensure t
:config
;;(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map)
@@ -286,7 +301,9 @@ Return new LIST-VAR value."
;;projectile-indexing-method 'alien ;; does not use ".projectile"
projectile-indexing-method 'hybrid
;;projectile-indexing-method 'native
projectile-completion-system 'default)
projectile-completion-system 'auto
projectile-tags-backend 'ggtags)
(add-to-list 'projectile-globally-ignored-files "*.png")
(projectile-mode +1))
@@ -300,8 +317,10 @@ Return new LIST-VAR value."
:config
(setq magit-delete-by-moving-to-trash nil
magit-clone-default-directory "~/dev/")
(magit-auto-revert-mode -1))
(magit-auto-revert-mode -1)
:bind
(("C-c g" . magit-file-dispatch)
("C-x g" . magit-status)))
(use-package git-gutter
:diminish
@@ -430,12 +449,23 @@ Return new LIST-VAR value."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Some useful setups
;; mouse
;; does not change point when getting focus - DOES NOT WORK
;;x-mouse-click-focus-ignore-position t
;; (setq x-mouse-click-focus-ignore-position t)
;;focus-follows-mouse nil ; must reflect WM settings
;;mouse-autoselect-window nil ; pointer does not select window
(global-set-key (kbd "C-h c") 'describe-char)
(global-set-key (kbd "C-x 4 C-b") 'switch-to-buffer-other-window)
(global-unset-key [mode-line mouse-3]) ; disabble annoying modeline mouse-3
;; compilation buffer in different frame
;; https://emacs.stackexchange.com/a/21393/23591
;; (push "*compilation*" special-display-buffer-names)
;; https://emacs.stackexchange.com/a/75534/23591
(add-to-list 'display-buffer-alist
(cons (rx string-start "*compilation*" string-end)
(cons 'display-buffer-reuse-window
'((reusable-frames . visible)
(inhibit-switch-frames . nil)))))
;; next example maps C-x C-x to the same as C-c
;; (global-set-key (kbd "C-x C-x") (lookup-key global-map (kbd "C-c")))
@@ -478,7 +508,10 @@ Return new LIST-VAR value."
(setq display-time-24hr-format t) ; time format
(display-time-mode 0) ; disable time in the mode-line
(defalias 'yes-or-no-p 'y-or-n-p) ; just 'y' or 'n' instead of yes/no
(if (< emacs-major-version 29) ; just 'y' or 'n' instead of yes/no
(defalias 'yes-or-no-p 'y-or-n-p)
(setopt use-short-answers t))
(setq duplicate-line-final-position -1) ; point on last new line
(mouse-avoidance-mode 'exile) ; Avoid collision of mouse with point
@@ -657,6 +690,7 @@ point reaches the beginning or end of the buffer, stop there."
(global-set-key (kbd "M-u") 'my/upcase-word)
(global-set-key (kbd "M-l") 'my/downcase-word)
(global-set-key (kbd "H-y") 'duplicate-dwim)
;; rewrite comment-kill to avoid filling kill-ring
;; From: https://emacs.stackexchange.com/a/5445/23591
@@ -712,6 +746,25 @@ in whole buffer. With neither, delete comments on current line."
(while (re-search-forward "\\(^[[:space:]\n]+\\)\n" nil t)
(replace-match "\n"))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; multiple cursors
(use-package multiple-cursors
:bind
(("C-c m t" . mc/mark-all-like-this)
("C-c m m" . mc/mark-all-like-this-dwim)
("C-c m l" . mc/edit-lines)
("C-c m e" . mc/edit-ends-of-lines)
("C-c m a" . mc/edit-beginnings-of-lines)
("C-c m n" . mc/mark-next-like-this)
("C-c m p" . mc/mark-previous-like-this)
("C-c m s" . mc/mark-sgml-tag-pair)
("C-c m d" . mc/mark-all-like-this-in-defun)
("C->" . mc/mark-next-like-this)
("C-<" . mc/mark-previous-like-this)
("C-S-<mouse-1>" . mc/add-cursor-on-click)
("C-M-m" . mc/mark-all-dwim)))
(use-package phi-search)
(use-package phi-search-mc :config (phi-search-mc/setup-keys))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; shell, eshell modes
;; will tell e-shell to run in visual mode
'(eshell-visual-commands
@@ -729,7 +782,7 @@ in whole buffer. With neither, delete comments on current line."
"Switch the buffers between the two last frames."
(interactive)
(let ((this-frame-buffer nil)
(other-frame-buffer nil))
(other-frame-buffer nil))
(setq this-frame-buffer (car (frame-parameter nil 'buffer-list)))
(other-frame 1)
(setq other-frame-buffer (car (frame-parameter nil 'buffer-list)))
@@ -844,41 +897,34 @@ in whole buffer. With neither, delete comments on current line."
(global-set-key (kbd "C-x w") 'compare-windows)
;; multiple cursors
(global-set-key (kbd "C->") 'mc/mark-next-like-this)
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this)
(global-set-key (kbd "C-S-<mouse-1>") 'mc/add-cursor-on-click)
(global-set-key (kbd "C-M-m") 'mc/mark-all-dwim)
;; as dot-mode uses <insert>, we allow overwrite-mode with S-<insert>
(global-set-key (kbd "S-<insert>") 'overwrite-mode)
(global-set-key (kbd "C-x g") 'magit-status)
;; (global-set-key (kbd "s-SPC") 'delete-blank-lines)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; define my own keymap (s-c)
;; first, define a keymap, with Super-c as prefix.
(defvar my/keys-mode-map (make-sparse-keymap)
"Keymap for my/keys-mode.")
;; (defvar my/keys-mode-map (make-sparse-keymap)
;; "Keymap for my/keys-mode.")
(defvar my/keys-mode-prefix-map (lookup-key global-map (kbd "s-c"))
"Keymap for custom key bindings starting with s-c prefix.")
;; (defvar my/keys-mode-prefix-map (lookup-key global-map (kbd "s-c"))
;; "Keymap for custom key bindings starting with s-c prefix.")
;; (define-key my/keys-mode-map (kbd "s-c") my/keys-mode-prefix-map)
;; ;; (define-key my/keys-mode-map (kbd "s-c") my/keys-mode-prefix-map)
(define-minor-mode my/keys-mode
"A minor mode for custom key bindings."
:lighter "s-c"
:keymap 'my/keys-mode-map
:global t)
;; (define-minor-mode my/keys-mode
;; "A minor mode for custom key bindings."
;; :lighter "s-c"
;; :keymap 'my/keys-mode-map
;; :global t)
(defun my/prioritize-keys
(file &optional noerror nomessage nosuffix must-suffix)
"Try to ensure that custom key bindings always have priority."
(unless (eq (caar minor-mode-map-alist) 'my/keys-mode)
(let ((my/keys-mode-map (assq 'my/keys-mode minor-mode-map-alist)))
(assq-delete-all 'my/keys-mode minor-mode-map-alist)
(add-to-list 'minor-mode-map-alist my/keys-mode-map))))
;; (defun my/prioritize-keys
;; (file &optional noerror nomessage nosuffix must-suffix)
;; "Try to ensure that custom key bindings always have priority."
;; (unless (eq (caar minor-mode-map-alist) 'my/keys-mode)
;; (let ((my/keys-mode-map (assq 'my/keys-mode minor-mode-map-alist)))
;; (assq-delete-all 'my/keys-mode minor-mode-map-alist)
;; (add-to-list 'minor-mode-map-alist my/keys-mode-map))))
(advice-add 'load :after #'my/prioritize-keys)
;; (advice-add 'load :after #'my/prioritize-keys)
;;(global-set-key (kbd "C-c t") #'make-temp-buffer)
;;(define-key my/keys-mode-prefix-map (kbd "r b") #'revert-buffer)
@@ -899,6 +945,7 @@ in whole buffer. With neither, delete comments on current line."
(require 'helm-projectile)
;; (require 'tramp)
(setq
helm-candidate-number-limit 100
;; From https://gist.github.com/antifuchs/9238468
helm-split-window-inside-p t ; open helm buffer in current window
@@ -920,6 +967,8 @@ in whole buffer. With neither, delete comments on current line."
helm-scroll-amount 8 ; scroll 8 lines other window M-<NEXT>
helm-ff-file-name-history-use-recentf t
helm-move-to-line-cycle-in-source nil
;; helm-ff-auto-update-initial-value nil
helm-echo-input-in-header-line t) ; ??
;;)
(helm-mode)
@@ -944,10 +993,19 @@ in whole buffer. With neither, delete comments on current line."
("<tab>" . helm-execute-persistent-action)
("C-i" . helm-execute-persistent-action) ; make TAB works in terminal
("C-z" . helm-select-action) ; list actions using C-z
;; bookmarks
))
)
;;("<left>" . helm-previous-source)
;;("<right>" . helm-next-source)
;;:map helm-imenu-map
;;("<left>" . helm-previous-source)
;;("<right>" . helm-next-source)
;;:map helm-find-files-map
;;("<left>" . helm-previous-source)
;;("<right>" . helm-next-source))
:bind*
(:map helm-find-files-map
("<left>" . helm-previous-source)
("<right>" . helm-next-source)))
(use-package helm-swoop
:bind
@@ -998,27 +1056,59 @@ in whole buffer. With neither, delete comments on current line."
;;(define-key whole-line-or-region-local-mode-map [remap uncomment-region] nil)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; undo tree
(use-package undo-tree
:diminish undo-tree-mode
:defer t
:init
(progn
(defalias 'redo 'undo-tree-redo)
(defalias 'undo 'undo-tree-undo)
(global-undo-tree-mode 1))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; vundo / undo-tree / winner
;; vundo config from :
;; https://www.reddit.com/r/emacs/comments/txwwfi/vundo_is_great_visual_undotree_for_emacs28/
(use-package vundo
:commands (vundo)
:config
(progn
(setq undo-tree-visualizer-timestamps t
undo-tree-visualizer-diff t
undo-tree-enable-undo-in-region t
;;undo-tree-auto-save-history t
)
(let ((undo-dir (concat my/emacs-tmpdir "/undo-tree/")))
(setq undo-tree-history-directory-alist
`(("." . ,undo-dir)))
(unless (file-exists-p undo-dir)
(make-directory undo-dir t)))))
;; Take less on-screen space.
(setq vundo-compact-display t)
;; Better contrasting highlight.
(custom-set-faces
'(vundo-node ((t (:foreground "#808080"))))
'(vundo-stem ((t (:foreground "#808080"))))
'(vundo-highlight ((t (:foreground "#FFFF00")))))
;; Use `HJKL` VIM-like motion, also Home/End to jump around.
;; (define-key vundo-mode-map (kbd "l") #'vundo-forward)
(define-key vundo-mode-map (kbd "<right>") #'vundo-forward)
;; (define-key vundo-mode-map (kbd "h") #'vundo-backward)
(define-key vundo-mode-map (kbd "<left>") #'vundo-backward)
;; (define-key vundo-mode-map (kbd "j") #'vundo-next)
(define-key vundo-mode-map (kbd "<down>") #'vundo-next)
;; (define-key vundo-mode-map (kbd "k") #'vundo-previous)
(define-key vundo-mode-map (kbd "<up>") #'vundo-previous)
(define-key vundo-mode-map (kbd "<home>") #'vundo-stem-root)
(define-key vundo-mode-map (kbd "<end>") #'vundo-stem-end)
(define-key vundo-mode-map (kbd "q") #'vundo-confirm)
(define-key vundo-mode-map (kbd "C-g") #'vundo-quit)
(define-key vundo-mode-map (kbd "RET") #'vundo-confirm))
(global-set-key (kbd "C-x u") 'vundo)
;; (use-package undo-tree
;; :diminish undo-tree-mode
;; :defer t
;; :init
;; (progn
;; (defalias 'redo 'undo-tree-redo)
;; (defalias 'undo 'undo-tree-undo)
;; (global-undo-tree-mode 1))
;; :config
;; (progn
;; (setq undo-tree-visualizer-timestamps t
;; undo-tree-visualizer-diff t
;; undo-tree-enable-undo-in-region t
;; ;;undo-tree-auto-save-history t
;; )
;; (let ((undo-dir (concat my/emacs-tmpdir "/undo-tree/")))
;; (setq undo-tree-history-directory-alist
;; `(("." . ,undo-dir)))
;; (unless (file-exists-p undo-dir)
;; (make-directory undo-dir t)))))
;; useful to come back to working window after a buffer has popped up
;; C-c <left> to come back
@@ -1043,7 +1133,8 @@ in whole buffer. With neither, delete comments on current line."
;; ([return] . nil)
("TAB" . company-complete-selection)
;; ([tab] . company-complete-selection)
("<right>" . company-complete-common))
;;("<right>" . company-complete-common)
)
:config
;; Too slow !
;; (global-company-mode 1)
@@ -1177,7 +1268,13 @@ in whole buffer. With neither, delete comments on current line."
;; (message "entering Makefile-mode")
(setq indent-tabs-mode t
tab-width 8
comment-column 60))
comment-column 60
comment-fill-column 120)
;;(defadvice comment-indent (around indent-to activate)
;; "Disable indent-tab-mode when indenting comment."
;; (lambda (fun &rest args) (let (indent-tabs-mode) (apply fun args))))
)
(add-hook 'makefile-mode-hook 'my/makefile-mode-hook)
@@ -1336,7 +1433,15 @@ in whole buffer. With neither, delete comments on current line."
comment-auto-fill-only-comments nil
comment-style 'extra-line))
(add-hook 'c-mode-hook 'my/c-style)
(use-package cc-mode
:ensure nil
:config
(add-hook 'c-mode-common-hook
(lambda ()
;;(when (derived-mode-p 'c-mode 'c++-mode 'java-mode 'asm-mode)
(when (derived-mode-p 'c-mode)
(ggtags-mode 1))))
(add-hook 'c-mode-hook 'my/c-style))
;;;;;;;;;;;;; linux kernel style
(defun c-lineup-arglist-tabs-only (ignored)
@@ -2115,8 +2220,8 @@ The output will appear in the buffer *PHP*."
;;; c-mode
(sp-with-modes '(c-mode c++-mode)
(sp-local-pair "{" nil :post-handlers '(("||\n[i]" "RET")))
(sp-local-pair "/*" "*/" :post-handlers '((" | " "SPC")
("* ||\n[i]" "RET"))))
(sp-local-pair "/*" "*/" :post-handlers '(("| " "SPC")
("* ||\n[i]" "RET"))))
;;; markdown-mode
(sp-with-modes '(markdown-mode gfm-mode rst-mode)
(sp-local-pair "*" "*" :bind "C-*")
@@ -2149,7 +2254,7 @@ The output will appear in the buffer *PHP*."
'sh-mode-hook
(lambda ()
(setq indent-tabs-mode nil
tab-width 4
tab-width 4
sh-basic-offset 4
comment-column 50
comment-auto-fill-only-comments t
@@ -2174,7 +2279,7 @@ The output will appear in the buffer *PHP*."
;;lsp-enable-on-type-formatting nil
lsp-enable-snippet nil
lsp-enable-symbol-highlighting t
lsp-lens-enable t
lsp-lens-enable nil
lsp-headerline-breadcrumb-enable t
lsp-enable-indentation nil
lsp-enable-on-type-formatting nil
@@ -2183,6 +2288,8 @@ The output will appear in the buffer *PHP*."
lsp-modeline-code-actions-enable t
lsp-modeline-code-actions-segments '(count icon name)
lsp-signature-render-documentation t)
;;(define-key lsp-mode-map (kbd "<mouse-3>") nil)
;;(define-key lsp-mode-map (kbd "C-S-<mouse-3>") 'lsp-mouse-click)
:hook
((sh-mode . lsp-deferred)
;;(c-mode-common . lsp-deferred)
@@ -2192,14 +2299,22 @@ The output will appear in the buffer *PHP*."
:ensure t
;;:diminish
:config
(setq ; lsp-ui-doc-show-with-cursor t
; lsp-ui-doc-show-with-mouse t
lsp-ui-sideline-enable t
lsp-ui-sideline-show-code-actions t
lsp-ui-sideline-enable t
(setq lsp-ui-doc-show-with-cursor t
lsp-ui-doc-show-with-mouse nil ; breaks isearch
lsp-ui-sideline-enable nil ; too messy
lsp-ui-sideline-show-hover t
lsp-ui-sideline-enable t
lsp-ui-doc-enable nil)
lsp-ui-sideline-show-symbol t
lsp-ui-sideline-show-code-actions t
;; lsp-ui-doc-enable nil
;; TRIED 2024/02/26
lsp-ui-doc-enable t
lsp-ui-doc-max-width 80
lsp-ui-doc-max-height 20
lsp-ui-doc-include-signature t ; type signature in doc
lsp-ui-doc-enhanced-markdown t ; looks b0rken (lists...)
lsp-ui-doc-position 'top ; top/bottom/at-point
lsp-ui-doc-alignment 'window)
:commands
(lsp-ui-mode)
@@ -2222,7 +2337,7 @@ The output will appear in the buffer *PHP*."
:diminish " ccls"
:init
(setq ccls-initialization-options
'(:index (:comments 2) :completion (:detailedLabel t)))
'(:index (:comments 2) :completion (:detailedLabel t)))
(setq-default flycheck-disabled-checkers '(c/c++-clang c/c++-cppcheck c/c++-gcc))
(setq ccls-sem-highlight-method 'font-lock)
;; alternatively,
@@ -2321,11 +2436,22 @@ at beginning and end of lines."
(while (re-search-forward "[ \t]+" nil t)
(replace-match " "))
;; remove spaces at lines beginning
(goto-char (point-min))
(while (re-search-forward "^[ \t]+" nil t)
(replace-match ""))
;;(goto-char (point-min))
;;(while (re-search-forward "^[ \t]+" nil t)
;; (replace-match ""))
;; remove spaces at line start/end
(delete-trailing-whitespace))))
;(delete-trailing-whitespace)
)))
(defun my/align-c-array (beg end)
"Align array declaration on commas between BEG and END."
(interactive "r")
(save-excursion
(save-restriction
(narrow-to-region beg end)
(my/trim-spaces (point-min) (point-max))
(align-regexp (point-min) (point-max) "\\(\\s-[[:alnum:]-_]+,\\)" -1 1 t)
(indent-region (point-min) (point-max) nil))))
(defun my/align (beg end)
"Align columns with spaces."

View File

@@ -35,14 +35,15 @@
(defconst my/loaded-files-at-startup
(list
"~/dev/brlib/Makefile"
"~/dev/brchess/Makefile"
"~/dev/brlib/Makefile"
;;"~/org/boot-disk.org"
;;"~/org/beaglebone-buster-setup.org"
;;"~/dev/www/cf.bodi/sql/coc.sql"
;;"~/dev/www/cf.bodi/sql/coc-sql.org"
user-init-file
"~/dev/tools/bash/Makefile"
;; "~/dev/tools/bash/Makefile"
"~/dev/brchess/src/board.c"
"~/org/emacs-cheatsheet.org")
;;"~/dev/g910/g910-gkey-macro-support/lib/data_mappers/char_uinput_mapper.py"
;;"~/dev/advent-of-code/2022/Makefile"