Grill away :)
>>is there behavior or are there side-effects that a user of
>>RepeatFindForw() and RepeatFindBack() needs to be aware of?
>>are there other considerations than cmdmap to (not) use
>>RepeatFindForw() and RepeatFindBack() inside or outside a list?
I can't think of anything.
I'll show the actual code. If this does not
answer all your questions, I'm happy to try and answer more.
The implementation of the repeat commands when editing a file:
int APPCALL cmRepeatFind(void) {
return Repeat(0);
}
int APPCALL cmRepeatFind2(FIND_FLAG_TYPE flag) {
return Repeat(flag);
}
int APPCALL cmRepeatFindForw(void) {
return Repeat(_FORWARD_);
}
int APPCALL cmRepeatFindBack(void) {
return Repeat(_BACKWARD_);
}
The implementation of the new repeat commands when in a list() or llist():
constant ssNONE = 0x00,
ssREPEAT = 0x01,
ssREPEATBACK = 0x02
/***************************************************************************
Don't allow finds on the compressed view 'occurrences' line.
***************************************************************************/
integer proc FindSearchString(string find_options)
integer width, found
// handle help
if speedsearch_help
return (FindHelpString(findstr, find_options))
endif
// handle view finds display
if DisplayMode() == _DISPLAY_FINDS_ and GetBufferId() == Query(ViewFindsId)
return (FindViewFindsString(findstr, find_options))
endif
// regular old find - fudge tab for Loaded Macros menu
width = Set(TabWidth, 1)
found = lFind(findstr, find_options)
Set(TabWidth, width)
return (found)
end
proc SpeedSearch(integer flags)
string find_options[4]
integer save_row
if listflags & _ENABLE_SEARCH_
find_options = iif(listflags & _ANCHOR_SEARCH_, "^i", "i")
if flags & ssREPEATBACK
find_options = find_options + "b"
else
find_options = find_options + iif(flags & ssREPEAT, '+', 'g')
endif
if listflags & _BLOCK_SEARCH_
find_options = find_options + "l"
endif
loop
search_active = TRUE
if Length(findstr) and FindSearchString(find_options)
// We need to turn off the block so updatedisplay will use
proper attribute.
BufferVideo()
PushBlock()
UnmarkBlock()
save_row = CurrRow()
ScrollToCenter()
if CurrRow() <> save_row
UpdateDisplay(_WINDOW_REFRESH_)
endif
_cmHiLiteFoundText(0)
PopBlock()
UnBufferVideo()
break
elseif (flags & (ssREPEAT|ssREPEATBACK))
break
elseif not DecFindStr()
UpdateDisplayNoBlock(_CLINE_REFRESH_)
search_active = FALSE
break
endif
endloop
endif
end
proc RepeatSearch()
SpeedSearch(ssREPEAT)
end
proc RepeatSearchBack()
SpeedSearch(ssREPEATBACK)
end
In the cmdmap:
[RepeatFindForw] RepeatSearch()
[RepeatFindBack] RepeatSearchBack()
> --
>
> ---
> You received this message because you are subscribed to the Google Groups "SemWare TSE Pro text editor" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
semware+u...@googlegroups.com.
> To view this discussion visit
https://groups.google.com/d/msgid/semware/000101db8254%24b0c20290%24124607b0%24%40ecarlo.nl.