@@ -8,6 +8,7 @@ if [ -f ~/.config/notes/config ]; then
8
8
. ~ /.config/notes/config
9
9
fi
10
10
11
+ file_ext=$PREFERED_EXT
11
12
configured_dir=${NOTES_DIRECTORY%/ } # Remove trailing slashes
12
13
notes_dir=" ${configured_dir:- $HOME / notes} "
13
14
escaped_notes_dir=" $( printf " $notes_dir " | sed -e ' s/[]\/$*.^|[]/\\&/g' ) "
@@ -78,11 +79,25 @@ find_notes() {
78
79
79
80
grep_notes () {
80
81
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 "
82
83
return 1
83
84
fi
84
85
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
+
86
101
local grep_result=$?
87
102
local formatted_output=$( printf " $grep_output " | without_notes_dir)
88
103
@@ -113,31 +128,38 @@ new_note() {
113
128
note_name=" $( generate_name) "
114
129
fi
115
130
mkdir -p " $( dirname " $notes_dir /$note_name " ) "
116
- open_note " $note_name .md "
131
+ open_note " $note_name "
117
132
}
118
133
119
134
remove_note () {
120
135
local rm_args=()
136
+ local len=${#@ }
137
+
121
138
if [[ " $1 " == " -r" || " $1 " == " --recursive" ]]; then
122
139
rm_args+=(" --recursive" )
123
140
shift
124
141
fi
125
142
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 "
128
147
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
133
154
}
134
155
135
156
open_something () {
136
157
if [[ -p /dev/stdin ]]; then
137
- read -d' \n ' note_names
158
+ read -d $" \n " note_names
138
159
while read note_name; do
139
- open_note " $ note_name"
160
+ buffer+= " ${ note_name} , "
140
161
done <<< " $note_names"
162
+ open_note ${buffer[@]}
141
163
elif [ $# -gt 0 ]; then
142
164
open_note " $* "
143
165
else
@@ -146,24 +168,33 @@ open_something() {
146
168
}
147
169
148
170
open_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
163
194
}
164
195
165
196
usage () {
166
- cat << EOF
197
+ cat << EOF
167
198
notes is a command line note taking tool.
168
199
169
200
Usage:
0 commit comments