44 current 2025-04-30 16:25:32 25.05.20250424.f771eb4 6.12.24 *
This commit is contained in:
165
home/scripts/journal/nf.sh
Normal file
165
home/scripts/journal/nf.sh
Normal file
@@ -0,0 +1,165 @@
|
||||
#!/bin/bash
|
||||
|
||||
main="/home/synchronous/journal/"
|
||||
#main_dir="$main/abstract"
|
||||
#main="/home/synchronous/code/nm/notes"
|
||||
main_dir="$main/rest"
|
||||
rofi_prompt="/home/synchronous/.config/rofi/styles/prompt-search.rasi"
|
||||
len_maindir=${#main_dir}
|
||||
|
||||
search() {
|
||||
rs="$(find "$main_dir" -follow -printf "%T@ %Tc %p\n" | sort -n -r | cut -c"$((len_maindir + 49))"- | rg -a '\.md$')"
|
||||
rcv=$(echo "$rs" | rofi -dmenu -theme "$rofi_prompt")
|
||||
if [[ "$rcv" == "" ]]; then exit 1; fi
|
||||
if [[ $(echo "$rs" | rg "$rcv") ]]; then # check if we actually have our note
|
||||
alacritty -t "$rcv" -e nvim "$main_dir/$rcv" \
|
||||
-c "Goyo | execute 'normal 4j' | set path+=$main_dir | autocmd BufEnter * let b:coc_suggest_disable=1" &!
|
||||
# -c "syntax match LinkPattern /[a-zA-Z0-9\-][a-zA-Z0-9\-]*\.md/" \
|
||||
# -c "highlight LinkPattern guifg=LightBlue gui=underline" \
|
||||
# -c "nnoremap <CR> :call CustomGf()<CR>" \
|
||||
# -c "nnoremap gf :call CustomGf()<CR>" \
|
||||
else
|
||||
|
||||
# if rcv doesn't contain md, add it
|
||||
if [[ $(echo "$rcv" | rg -v '\.md$') ]]; then
|
||||
rcv="$rcv.md"
|
||||
fi
|
||||
|
||||
no_md="${rcv%.md}"
|
||||
replaced="${no_md//[-_]/ }"
|
||||
echo "lol"
|
||||
|
||||
alacritty -t "$rcv" -e nvim "$main_dir/$rcv" \
|
||||
-c "Goyo | set path+=$main_dir | autocmd BufEnter * let b:coc_suggest_disable=1" \
|
||||
-c "call setline(1, ['---', 'title: $replaced', 'tags: ', '---', '']) | execute 'normal G'" &!
|
||||
# make sure standardized frontmatter is there
|
||||
fi
|
||||
}
|
||||
|
||||
open_daily() {
|
||||
alacritty -t "daily.md" -e nvim "$main/daily.md" \
|
||||
-c "Goyo | set path+=$main_dir" &!
|
||||
-c "execute 'normal G'"
|
||||
}
|
||||
|
||||
open_todo() {
|
||||
alacritty -t "todo.md" -e nvim "$main/todo.md" \
|
||||
-c "Goyo | set path+=$main_dir" &!
|
||||
# -c "execute 'normal G'"
|
||||
}
|
||||
|
||||
notes_find() {
|
||||
rg $2 $main_dir
|
||||
}
|
||||
|
||||
search_by_tags() {
|
||||
tt=""
|
||||
# while IFS= read -r -d '' file; do
|
||||
# is_tags=$(awk 'NR==3 {print substr($0, 1, 4)}' "$file")
|
||||
# if [[ $is_tags == "tags" ]]; then
|
||||
# line=$(sed -n '3p' "$file")
|
||||
# tt+=$(echo "$file" | cut -c"$((len_maindir + 2))"- )
|
||||
# tt+=" [$(echo "$line" | cut -c7-)]\n"
|
||||
# fi
|
||||
# done < <(find $main_dir -type f -print0)
|
||||
|
||||
rs="$(find "$main_dir" -follow -printf "%T@ %Tc %p\n" | sort -n -r | cut -c"$((len_maindir + 49))"- | rg -a '\.md$')"
|
||||
|
||||
while IFS= read -r -d '' file; do
|
||||
{ read -r _; read -r _; read -r line; } < "$file"
|
||||
|
||||
if [[ ${line:0:4} == "tags" ]]; then
|
||||
tags="${line:6}"
|
||||
tags="${tags#"${tags%%[![:space:]]*}"}"
|
||||
tags="${tags%"${tags##*[![:space:]]}"}"
|
||||
filename="${file:$((len_maindir + 1))}"
|
||||
tt+="$filename [$tags]\n"
|
||||
fi
|
||||
done < <(find "$main_dir" -type f -print0)
|
||||
|
||||
rcv=$(echo -e "$tt" | awk 'NR > 1 {print prev} {prev=$0} END {printf "%s", prev}' | rofi -dmenu -theme "$rofi_prompt")
|
||||
rcv=$(echo $rcv | sed 's/ \[[^]]*\]$//')
|
||||
if [[ "$rcv" == "" ]]; then exit 1; fi
|
||||
if [[ $(echo "$rs" | rg "$rcv") ]]; then # check if we actually have our note
|
||||
alacritty -t "$rcv" -e nvim "$main_dir/$rcv" \
|
||||
-c "Goyo | execute 'normal 4j' | set path+=$main_dir | autocmd BufEnter * let b:coc_suggest_disable=1" &!
|
||||
else
|
||||
|
||||
# if rcv doesn't contain md, add it
|
||||
if [[ $(echo "$rcv" | rg -v '\.md$') ]]; then
|
||||
rcv="$rcv.md"
|
||||
fi
|
||||
|
||||
no_md="${rcv%.md}"
|
||||
replaced="${no_md//[-_]/ }"
|
||||
|
||||
alacritty -t "$rcv" -e nvim "$main_dir/$rcv" \
|
||||
-c "Goyo | set path+=$main_dir | autocmd BufEnter * let b:coc_suggest_disable=1" \
|
||||
-c "call setline(1, ['---', 'title: $replaced', 'tags: ', '---', '']) | execute 'normal G'" &! # make sure standardized frontmatter is there
|
||||
fi
|
||||
}
|
||||
|
||||
search_by_title() {
|
||||
# tt=""
|
||||
# while IFS= read -r -d '' file; do
|
||||
# is_title=$(awk 'NR==2 {print substr($0, 1, 5)}' "$file")
|
||||
# if [[ $is_title == "title" ]]; then
|
||||
# line=$(sed -n '2p' "$file")
|
||||
# # tt+="$(echo "$line" | cut -c7-)"
|
||||
# tt+="$(echo "$line" | cut -c7- | sed 's/^ *//; s/ *$//')"
|
||||
# tt+=' ('$(echo "$file" | cut -c"$((len_maindir + 2))"- )')\n'
|
||||
# fi
|
||||
# done < <(find $main_dir -type f -print0)
|
||||
|
||||
rs="$(find "$main_dir" -follow -printf "%T@ %Tc %p\n" | sort -n -r | cut -c"$((len_maindir + 49))"- | rg -a '\.md$')"
|
||||
|
||||
tt=""
|
||||
while IFS= read -r -d '' file; do
|
||||
{ read -r _; read -r line; } < "$file"
|
||||
|
||||
if [[ ${line:0:5} == "title" ]]; then
|
||||
title="${line:6}"
|
||||
|
||||
title="${title#"${title%%[![:space:]]*}"}"
|
||||
title="${title%"${title##*[![:space:]]}"}"
|
||||
filename="${file:$((len_maindir + 1))}"
|
||||
tt+="$title ($filename)\n"
|
||||
fi
|
||||
done < <(find "$main_dir" -type f -print0)
|
||||
|
||||
rcv=$(echo -e "$tt" | awk 'NR > 1 {print prev} {prev=$0} END {printf "%s", prev}' | rofi -dmenu -theme "$rofi_prompt")
|
||||
rcv=$(echo $rcv | rg -e "[a-zA-Z0-9]*\.md" -o)
|
||||
if [[ "$rcv" == "" ]]; then exit 1; fi
|
||||
# echo "$rcv"
|
||||
if [[ $(echo "$rs" | rg "$rcv") ]]; then # check if we actually have our note
|
||||
alacritty -t "$rcv" -e nvim "$main_dir/$rcv" \
|
||||
-c "Goyo | execute 'normal 4j' | set path+=$main_dir | autocmd BufEnter * let b:coc_suggest_disable=1" &!
|
||||
else
|
||||
|
||||
# if rcv doesn't contain md, add it
|
||||
if [[ $(echo "$rcv" | rg -v '\.md$') ]]; then
|
||||
rcv="$rcv.md"
|
||||
fi
|
||||
|
||||
no_md="${rcv%.md}"
|
||||
replaced="${no_md//[-_]/ }"
|
||||
|
||||
alacritty -t "$rcv" -e nvim "$main_dir/$rcv" \
|
||||
-c "Goyo | set path+=$main_dir | autocmd BufEnter * let b:coc_suggest_disable=1" \
|
||||
-c "call setline(1, ['---', 'title: $replaced', 'tags: ', '---', '']) | execute 'normal G'" &! # make sure standardized frontmatter is there
|
||||
fi
|
||||
}
|
||||
|
||||
run_command() {
|
||||
case $1 in
|
||||
"search") search ;;
|
||||
"daily") open_daily ;;
|
||||
"todo") open_todo ;;
|
||||
"find") notes_find ;;
|
||||
"tags") search_by_tags ;;
|
||||
"title") search_by_title ;;
|
||||
*)
|
||||
esac
|
||||
}
|
||||
|
||||
run_command "$1"
|
||||
Reference in New Issue
Block a user