zsh/.zsh/functions/notes.zsh

# zsh/.zsh/functions/notes.zsh
# One markdown file per day under ~/notes/YYYY/MM/YYYY-MM-DD.md.

typeset -r NOTES_ROOT="${NOTES_ROOT:-$HOME/notes}"

n() {
  local today=$(date +%Y-%m-%d)
  local yr=${today%%-*}
  local mo=${today:5:2}
  local dir="$NOTES_ROOT/$yr/$mo"
  local file="$dir/$today.md"
  mkdir -p "$dir"
  if [[ ! -f "$file" ]]; then
    cat > "$file" <<EOF
# $today

## today

## notes
EOF
  fi
  ${EDITOR:-nvim} "$file"
}

ns() {
  local q="${*:?search term required}"
  rg --color=always -n -i --heading "$q" "$NOTES_ROOT" \
    | less -R
}

nrecent() {
  local n="${1:-10}"
  find "$NOTES_ROOT" -name '*.md' -type f \
    | sort -r \
    | head -n "$n"
}

nn() {
  local slug="${*:?topic required}"
  slug="${slug// /-}"
  ${EDITOR:-nvim} "$NOTES_ROOT/topics/${slug}.md"
}