@@ -8,6 +8,7 @@ if [ -f ~/.config/notes/config ]; then
88 . ~ /.config/notes/config
99fi
1010
11+ file_ext=$PREFERED_EXT
1112configured_dir=${NOTES_DIRECTORY%/ } # Remove trailing slashes
1213notes_dir=" ${configured_dir:- $HOME / notes} "
1314escaped_notes_dir=" $( printf " $notes_dir " | sed -e ' s/[]\/$*.^|[]/\\&/g' ) "
@@ -78,11 +79,25 @@ find_notes() {
7879
7980grep_notes () {
8081 if [ ! " $# " -gt 0 ]; then
81- printf " Grep requires a pattern, but none was provided."
82+ printf " Grep requires a pattern, but none was provided.\n "
8283 return 1
8384 fi
8485
85- local grep_output=$( grep -r " $notes_dir " -li -e " $* " 2>&1 )
86+ local grep_output
87+ if [[ -t 1 ]]; then
88+ matches=$( grep --color=$GREP_COLOR -r $NOTES_DIRECTORY -in -e " $* " 2>&1 )
89+ OLDIFS=$IFS
90+ IFS=$' \n '
91+ for result in $matches ; do
92+ len=${# result}
93+ result=$( echo $result | cut -d' /' -f2-)
94+ grep_output+=" $( echo /${result} ) \n"
95+ done
96+ IFS=$OLDIFS
97+ else
98+ grep_output=$( grep -r " $notes_dir " -li -e " $* " 2>&1 )
99+ fi
100+
86101 local grep_result=$?
87102 local formatted_output=$( printf " $grep_output " | without_notes_dir)
88103
@@ -113,31 +128,38 @@ new_note() {
113128 note_name=" $( generate_name) "
114129 fi
115130 mkdir -p " $( dirname " $notes_dir /$note_name " ) "
116- open_note " $note_name .md "
131+ open_note " $note_name "
117132}
118133
119134remove_note () {
120135 local rm_args=()
136+ local len=${#@ }
137+
121138 if [[ " $1 " == " -r" || " $1 " == " --recursive" ]]; then
122139 rm_args+=(" --recursive" )
123140 shift
124141 fi
125142
126- local note_name=" $* "
127- local to_remove=" $notes_dir /$note_name "
143+ len=${#@ }
144+ for i in $( seq 1 $len ) ; do
145+ local note_name=" $1 "
146+ local to_remove=" $notes_dir /$note_name "
128147
129- if [ -f " $notes_dir /$note_name .md" ]; then
130- to_remove=" $notes_dir /$note_name .md"
131- fi
132- rm " ${rm_args[@]} " " $to_remove "
148+ if [ -f " $notes_dir /$note_name$file_ext " ]; then
149+ to_remove=" $notes_dir /$note_name$file_ext "
150+ fi
151+ rm " ${rm_args[@]} " " $to_remove "
152+ shift
153+ done
133154}
134155
135156open_something () {
136157 if [[ -p /dev/stdin ]]; then
137- read -d' \n ' note_names
158+ read -d $" \n " note_names
138159 while read note_name; do
139- open_note " $ note_name"
160+ buffer+= " ${ note_name} , "
140161 done <<< " $note_names"
162+ open_note ${buffer[@]}
141163 elif [ $# -gt 0 ]; then
142164 open_note " $* "
143165 else
@@ -146,24 +168,33 @@ open_something() {
146168}
147169
148170open_note () {
149- local note_path=$1
150-
151- if [[ " $note_path " != * .md ]]; then
152- note_path=" $note_path .md"
153- fi
154- if [ ! -f " $note_path " ]; then
155- note_path=" $notes_dir /$note_path "
156- fi
157- if [ -z " $EDITOR " ]; then
158- printf " Please set \$ EDITOR to edit notes\n"
159- exit 1
160- fi
161-
162- $EDITOR " $note_path " < /dev/tty
171+ local note_path
172+ local ext_check
173+ local buffer=$@
174+ local files=()
175+
176+ OLDIFS=$IFS ; IFS=' ,'
177+ for file in $buffer ; do
178+ note_path=$file
179+ ext_check=$( echo ${note_path: 1:- 1} | grep -e ' \.[a-z]' )
180+ if [[ -z ${ext_check} ]]; then
181+ note_path=" $note_path$file_ext "
182+ fi
183+ if [ ! -f " $note_path " ]; then
184+ note_path=" $notes_dir /$note_path "
185+ fi
186+ if [ -z " $EDITOR " ]; then
187+ printf " Please set \$ EDITOR to edit notes\n"
188+ exit 1
189+ fi
190+ files+=(" ${note_path} " )
191+ done ; IFS=$OLDIFS
192+
193+ $EDITOR " ${files[@]} " < /dev/tty
163194}
164195
165196usage () {
166- cat << EOF
197+ cat << EOF
167198notes is a command line note taking tool.
168199
169200Usage:
0 commit comments