@@ -124,10 +124,10 @@ for I in $(seq -f '%02g' 0 $(($SPLIT-1)) ) ; do
124
124
IGNORECASE=$( echo " (${IGNORECASE_FIXSPECIALCHAR} |${IGNORECASE_INWORD} |${IGNORECASE_WHOLEWORD} )" | ${GP} sed -r ' s/\(\|/(/' | ${GP} sed -r ' s/\|\|/|/g' | ${GP} sed -r ' s/\|\)/)/' ) ' (?!.*' " ${SPELLOKRX} " ' )'
125
125
CASEMATCH=$( echo " (${CASEMATCH_FIXCASE} |${MATCHCASE_INWORD} )" | ${GP} sed -r ' s/\(\|/(/' | ${GP} sed -r ' s/\|\|/|/g' | ${GP} sed -r ' s/\|\)/)/' ) ' (?!.*' " ${SPELLOKRX} " ' )'
126
126
127
- FILE=$INPUTFILES # init with input files (if ag is run with single file, file path is now in output)
127
+ FILE=$INPUTFILES # init with input files (if ag is run with single file, file path is not written in output)
128
128
129
129
while read -u 3 -r LINE; do
130
- echo " $LINE "
130
+ echo -e " $LINE "
131
131
ERRORFOUND=YES
132
132
NOCOLOR=$( echo " $LINE " | ${GP} sed -r ' s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' )
133
133
if [[ " $NOCOLOR " =~ ^[[:alnum:]][[:alnum:]\/\. _-]+$ ]]; then
@@ -141,7 +141,9 @@ for I in $(seq -f '%02g' 0 $(($SPLIT-1)) ) ; do
141
141
fi
142
142
NUMBER=$( echo " $NOCOLOR " | cut -d: -f1)
143
143
ERRORLINE=$( echo " $NOCOLOR " | cut -d: -f2)
144
- ERROR=$( echo " $LINE " | ${GP} sed -r ' s/^.*?\x1B\[30;43m(.*?)\x1B\[0m.*$/\1/' )
144
+ ERROR=$( echo " $LINE " | ${GP} sed -r ' s/^.*?\x1B\[30;43m(.*?)\x1B\[0m.*?$/\1/' )
145
+ PREVCHAR=$( echo " $LINE " | cut -d: -f2 | ${GP} sed -r ' s/^(.*?)\x1B\[30;43m.*?\x1B\[0m.*?$/\1/' | ${GP} sed -r ' s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' | tail -c 2)
146
+ NEXTCHAR=$( echo " $LINE " | cut -d: -f2 | ${GP} sed -r ' s/^.*?\x1B\[30;43m.*?\x1B\[0m(.*?)$/\1/' | ${GP} sed -r ' s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' | head -c 1)
145
147
146
148
ERRORNOCOLOR=$( echo " $ERROR " | ${GP} sed -r ' s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' )
147
149
if [[ " $ERRORNOCOLOR " =~ ^[[:digit:]]+: ]]; then
@@ -152,10 +154,14 @@ for I in $(seq -f '%02g' 0 $(($SPLIT-1)) ) ; do
152
154
ERRORSMALLCASE=$( echo ${ERROR,,} | ${GP} sed -r ' s/\(/\\(/g' | ${GP} sed -r ' s/\)/\\)/g' | ${GP} sed -r ' s/\|/\\|/g' )
153
155
if [[ ! " ${ERRORSMALLCASE} " =~ $IGNORECASE_INWORD ]]; then
154
156
if [[ -n $( ag --nonumbers --case-sensitive " ^${ERRORSMALLCASE: 1:- 1}${ERRORSMALLCASE: -1} ?:" scripts/spell_check/spelling.dat) ]]; then
157
+ PREVCHAR=${ERROR:: 1}
158
+ # remove first character
155
159
ERRORSMALLCASE=${ERRORSMALLCASE# ?}
156
160
ERROR=${ERROR# ?}
157
161
fi
158
162
if [[ -n $( ag --nonumbers --case-sensitive " ^${ERRORSMALLCASE::- 1} :" scripts/spell_check/spelling.dat) ]]; then
163
+ NEXTCHAR=${ERROR: ${# ERROR} -1: 1}
164
+ # remove last character
159
165
ERRORSMALLCASE=${ERRORSMALLCASE::- 1}
160
166
ERROR=${ERROR::- 1}
161
167
fi
@@ -177,7 +183,7 @@ for I in $(seq -f '%02g' 0 $(($SPLIT-1)) ) ; do
177
183
# Skip global replace
178
184
if [[ -n ${GLOBREP_ALLFILES["$ERROR"]} ]]; then
179
185
echo -e " replace \x1B[33m$ERROR \x1B[0m by \x1B[33m$CORRECTIONCASE \x1B[0m in \x1B[33m$FILE \x1B[0m"
180
- ${GP} sed -i -r " /${SPELLOKRX} /! s/$ERROR / $ CORRECTIONCASE /g" $FILE
186
+ ${GP} sed -i -r " /${SPELLOKRX} /! s/${PREVCHAR}${ ERROR}${NEXTCHAR} / ${PREVCHAR} $ CORRECTIONCASE${NEXTCHAR} /g" $FILE
181
187
continue
182
188
elif [[ ( -n ${GLOBREP_CURRENTFILE["$ERROR"]} ) || ( -n ${GLOBREP_IGNORE["$ERROR"]} ) ]]; then
183
189
echo " skipping occurrence"
@@ -190,6 +196,7 @@ for I in $(seq -f '%02g' 0 $(($SPLIT-1)) ) ; do
190
196
fi
191
197
if [[ " $FILE " =~ \. (h| cpp| sip)$ ]]; then
192
198
if [[ " $ERRORLINE " =~ ^\s * (\/ * \|\/\/ ) ]]; then
199
+ # line is already commented
193
200
SPELLOKSTR=' #spellok'
194
201
fi
195
202
fi
@@ -215,20 +222,20 @@ for I in $(seq -f '%02g' 0 $(($SPLIT-1)) ) ; do
215
222
case $n in
216
223
r)
217
224
echo -e " replacing \x1B[33m$ERROR \x1B[0m by \x1B[33m$CORRECTIONCASE \x1B[0m in \x1B[33m$FILE \x1B[0m at line \x1B[33m$NUMBER \x1B[0m"
218
- ${GP} sed -i " ${NUMBER} s/$ERROR / $ CORRECTIONCASE /g" $FILE
225
+ ${GP} sed -i " ${NUMBER} s/${PREVCHAR}${ ERROR}${NEXTCHAR} / ${PREVCHAR} $ CORRECTIONCASE${NEXTCHAR} /g" $FILE
219
226
break
220
227
;;
221
228
f)
222
229
GLOBREP_CURRENTFILE+=([" $ERROR " ]=1)
223
230
echo -e " replacing \x1B[33m$ERROR \x1B[0m by \x1B[33m$CORRECTIONCASE \x1B[0m in \x1B[33m$FILE \x1B[0m"
224
- ${GP} sed -i -r " /${SPELLOKRX} /! s/$ERROR / $ CORRECTIONCASE /g" $FILE
231
+ ${GP} sed -i -r " /${SPELLOKRX} /! s/${PREVCHAR}${ ERROR}${NEXTCHAR} / ${PREVCHAR} $ CORRECTIONCASE${NEXTCHAR} /g" $FILE
225
232
break
226
233
;;
227
234
a)
228
235
GLOBREP_CURRENTFILE+=([" $ERROR " ]=1)
229
236
GLOBREP_ALLFILES+=([" $ERROR " ]=1)
230
237
echo -e " replace \x1B[33m$ERROR \x1B[0m by \x1B[33m$CORRECTIONCASE \x1B[0m in \x1B[33m$FILE \x1B[0m"
231
- ${GP} sed -i -r " /${SPELLOKRX} /! s/$ERROR / $ CORRECTIONCASE /g" $FILE
238
+ ${GP} sed -i -r " /${SPELLOKRX} /! s/${PREVCHAR}${ ERROR}${NEXTCHAR} / ${PREVCHAR} $ CORRECTIONCASE${NEXTCHAR} /g" $FILE
232
239
break
233
240
;;
234
241
p)
@@ -242,7 +249,7 @@ for I in $(seq -f '%02g' 0 $(($SPLIT-1)) ) ; do
242
249
MATCHCASE=" $ERROR :$CORRECTION "
243
250
CORRECTIONCASE=$( echo " $MATCHCASE " | ${GP} sed -r ' s/([A-Z]+):(.*)/\1:\U\2/; s/([A-Z][a-z]+):([a-z])/\1:\U\2\L/' | cut -d: -f2)
244
251
echo -e " replacing \x1B[33m$ERROR \x1B[0m by \x1B[33m$CORRECTIONCASE \x1B[0m in \x1B[33m$FILE \x1B[0m at line \x1B[33m$NUMBER \x1B[0m"
245
- ${GP} sed -i " ${NUMBER} s/$ERROR / $ CORRECTIONCASE /g" $FILE
252
+ ${GP} sed -i " ${NUMBER} s/${PREVCHAR}${ ERROR}${NEXTCHAR} / ${PREVCHAR} $ CORRECTIONCASE${NEXTCHAR} /g" $FILE
246
253
break
247
254
;;
248
255
c)
0 commit comments