09-17-2016, 07:24 AM
Bookmarks (tags) at specific points (lines) of an item
Function SetBookm
Function GetBookm
Function SetBookm
str si.getmacro(getopt(itemid) 1)
str caller.getmacro(getopt(itemid 1) 1);err caller=si
if ideb; min 0; err out "<>%s : <open ''%s /%i''>%s</open> - Called by : <open>%s</open>%s" NowT si _error.place si caller
;www.quickmacros.com/forum/viewtopic.php?p=31513
int c=GetQmCodeEditor
str newText=F" $BkM []"
;int j=SendMessage(c SCI.SCI_GETCURRENTPOS 0 0)
;SendMessage c SCI.SCI_GOTOPOS j+len(newText)-2 0
int j=SendMessage(c SCI.SCI_GETCURRENTPOS 0 0)
int l=SendMessage(c SCI.SCI_LINEFROMPOSITION j 0)
SendMessage c SCI.SCI_GOTOLINE l 0
SendMessage c SCI.SCI_INSERTTEXT -1 newText
j=SendMessage(c SCI.SCI_GETLINEENDPOSITION l 0)
SendMessage c SCI.SCI_GOTOPOS j 0
0.25
int x y cx cy
GetCaretXY x y cx cy
ShowTooltip "Type the bookmark's label" 3 x y+cy 0 1
Function GetBookm
str si.getmacro(getopt(itemid) 1)
str caller.getmacro(getopt(itemid 1) 1);err caller=si
if ideb; min 0; err out "<>%s : <open ''%s /%i''>%s</open> - Called by : <open>%s</open>%s" NowT si _error.place si caller
;www.quickmacros.com/forum/viewtopic.php?p=31513
int c=GetQmCodeEditor
ARRAY(int) lines
int i=QMEFindAll("$BkM" lines)
if i=0
,beeS 1000 300
,Task_Message "There exist no Bookmarks !" 0 1170 2
,ret
str items s
int lens
for i 0 lines.len
,lens=SendMessage(c SCI.SCI_GETTEXTLENGTH lines[i] 0)
,s.fix(SendMessage(c SCI.SCI_GETLINE lines[i] s.all(lens)))
,_s.get(s 6)
,items.formata("%s" _s)
;,out F"{i+1}. {lines[i]}"
i=ListDialog(items "Select the Label of a Bookmark to Go" "Go to Bookmark" 128)
;outt F"{i} - {lines[i-1]}"
SendMessage(c SCI.SCI_GOTOLINE lines[i-1] 0)