File src/hstr.c changed (mode: 100644) (index e106d86..54be6d9) |
... |
... |
unsigned hstr_make_selection(char *prefix, HistoryItems *history, int maxSelecti |
452 |
452 |
regmatch_t regexpMatch; |
regmatch_t regexpMatch; |
453 |
453 |
char regexpErrorMessage[CMDLINE_LNG]; |
char regexpErrorMessage[CMDLINE_LNG]; |
454 |
454 |
bool regexpCompilationError=false; |
bool regexpCompilationError=false; |
455 |
|
bool keywordsAllMatch; |
|
456 |
|
char *keywordsSavePtr; |
|
457 |
|
char *keywordsToken; |
|
458 |
|
char *keywordsParsedLine; |
|
|
455 |
|
bool keywordsAllMatch; |
|
456 |
|
char *keywordsSavePtr; |
|
457 |
|
char *keywordsToken; |
|
458 |
|
char *keywordsParsedLine; |
459 |
459 |
char *keywordsPointerToDelete; |
char *keywordsPointerToDelete; |
460 |
460 |
for(i=0; i<count && selectionCount<maxSelectionCount; i++) { |
for(i=0; i<count && selectionCount<maxSelectionCount; i++) { |
461 |
461 |
if(source[i]) { |
if(source[i]) { |
|
... |
... |
unsigned hstr_make_selection(char *prefix, HistoryItems *history, int maxSelecti |
492 |
492 |
} |
} |
493 |
493 |
break; |
break; |
494 |
494 |
case HH_MATCH_KEYWORDS: |
case HH_MATCH_KEYWORDS: |
495 |
|
// TODO: differentiate between case-sensitive and insensitive |
|
|
495 |
|
// TODO differentiate between case-sensitive and insensitive |
496 |
496 |
keywordsParsedLine = strdup(prefix); |
keywordsParsedLine = strdup(prefix); |
497 |
|
keywordsAllMatch = true; |
|
|
497 |
|
keywordsAllMatch = true; |
498 |
498 |
keywordsPointerToDelete = keywordsParsedLine; |
keywordsPointerToDelete = keywordsParsedLine; |
499 |
499 |
while (true) { |
while (true) { |
500 |
500 |
keywordsToken = strtok_r(keywordsParsedLine, " ", &keywordsSavePtr); |
keywordsToken = strtok_r(keywordsParsedLine, " ", &keywordsSavePtr); |
501 |
|
keywordsParsedLine = NULL; |
|
|
501 |
|
keywordsParsedLine = NULL; |
502 |
502 |
if (keywordsToken == NULL) { |
if (keywordsToken == NULL) { |
503 |
503 |
break; |
break; |
504 |
504 |
} |
} |
505 |
|
|
|
506 |
505 |
if (strcasestr(source[i], keywordsToken) == NULL) { |
if (strcasestr(source[i], keywordsToken) == NULL) { |
507 |
506 |
keywordsAllMatch = false; |
keywordsAllMatch = false; |
508 |
507 |
} |
} |
509 |
508 |
} |
} |
510 |
|
if (keywordsAllMatch) { |
|
|
509 |
|
if (keywordsAllMatch) { |
511 |
510 |
hstr->selection[selectionCount++]=source[i]; |
hstr->selection[selectionCount++]=source[i]; |
512 |
511 |
} |
} |
513 |
512 |
free(keywordsPointerToDelete); |
free(keywordsPointerToDelete); |
|
... |
... |
void print_selection_row(char *text, int y, int width, char *pattern) |
561 |
560 |
if(pattern && strlen(pattern)) { |
if(pattern && strlen(pattern)) { |
562 |
561 |
color_attr_on(A_BOLD); |
color_attr_on(A_BOLD); |
563 |
562 |
char *p; |
char *p; |
|
563 |
|
bool keywordsAllMatch; |
|
564 |
|
char *keywordsSavePtr; |
|
565 |
|
char *keywordsToken; |
|
566 |
|
char *keywordsParsedLine; |
|
567 |
|
char *keywordsPointerToDelete; |
564 |
568 |
|
|
565 |
569 |
switch(hstr->historyMatch) { |
switch(hstr->historyMatch) { |
566 |
570 |
case HH_MATCH_SUBSTRING: |
case HH_MATCH_SUBSTRING: |
|
... |
... |
void print_selection_row(char *text, int y, int width, char *pattern) |
581 |
585 |
mvprintw(y, 1+(p-text), "%s", pattern); |
mvprintw(y, 1+(p-text), "%s", pattern); |
582 |
586 |
break; |
break; |
583 |
587 |
case HH_MATCH_KEYWORDS: |
case HH_MATCH_KEYWORDS: |
584 |
|
p=strstr(text, pattern); |
|
585 |
|
mvprintw(y, 1+(p-text), "%s", pattern); |
|
|
588 |
|
// TODO MD split pattern using space and highlight each segment |
|
589 |
|
keywordsParsedLine = strdup(pattern); |
|
590 |
|
keywordsAllMatch = true; |
|
591 |
|
keywordsPointerToDelete = keywordsParsedLine; |
|
592 |
|
while (true) { |
|
593 |
|
keywordsToken = strtok_r(keywordsParsedLine, " ", &keywordsSavePtr); |
|
594 |
|
keywordsParsedLine = NULL; |
|
595 |
|
if (keywordsToken == NULL) { |
|
596 |
|
break; |
|
597 |
|
} |
|
598 |
|
p=strstr(text, keywordsToken); |
|
599 |
|
mvprintw(y, 1+(p-text), "%s", keywordsToken); |
|
600 |
|
} |
|
601 |
|
free(keywordsPointerToDelete); |
|
602 |
|
|
586 |
603 |
break; |
break; |
587 |
604 |
} |
} |
588 |
605 |
color_attr_off(A_BOLD); |
color_attr_off(A_BOLD); |