mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-30 17:26:31 +00:00
dbf8647d59
Added top & right borders to RawDr. Improved spacing in some debug and compiler reporting. Fixed RawPutChar and EdLite tab width. Fixed Ui missing '0x' prefix syntax highlighter bug. Added 32BitPaint demo.
728 lines
69 KiB
HTML
Executable file
728 lines
69 KiB
HTML
Executable file
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
|
|
<meta name="generator" content="ZealOS V0.08">
|
|
<style type="text/css">
|
|
body {background-color:#000000;}
|
|
.cF0{color:#ffffff;background-color:#000000;}
|
|
.cF1{color:#3465a4;background-color:#000000;}
|
|
.cF2{color:#4e9a06;background-color:#000000;}
|
|
.cF3{color:#06989a;background-color:#000000;}
|
|
.cF4{color:#a24444;background-color:#000000;}
|
|
.cF5{color:#75507b;background-color:#000000;}
|
|
.cF6{color:#ce982f;background-color:#000000;}
|
|
.cF7{color:#bcc0b9;background-color:#000000;}
|
|
.cF8{color:#555753;background-color:#000000;}
|
|
.cF9{color:#729fcf;background-color:#000000;}
|
|
.cFA{color:#82bc49;background-color:#000000;}
|
|
.cFB{color:#34e2e2;background-color:#000000;}
|
|
.cFC{color:#ac3535;background-color:#000000;}
|
|
.cFD{color:#ad7fa8;background-color:#000000;}
|
|
.cFE{color:#fce94f;background-color:#000000;}
|
|
.cFF{color:#000000;background-color:#000000;}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<pre style="font-family:monospace;font-size:12pt">
|
|
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"DolDoc/Editor"</span><span class=cF0>
|
|
<a name="l2"></a>
|
|
<a name="l3"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocGoToLine</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF9>I64</span><span class=cF0> line_num) </span><span class=cF2>//one based</span><span class=cF0>
|
|
<a name="l4"></a>{</span><span class=cF2>//Nearest to specified line num. Move cur_entry & center.</span><span class=cF0>
|
|
<a name="l5"></a> </span><span class=cF1>Bool</span><span class=cF0> res = </span><span class=cF3>FALSE</span><span class=cF0>, unlock;
|
|
<a name="l6"></a>
|
|
<a name="l7"></a> </span><span class=cF1>if</span><span class=cF0> (doc)
|
|
<a name="l8"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l9"></a> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
|
<a name="l10"></a> doc->x = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l11"></a> doc->y = line_num - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l12"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc, </span><span class=cF3>RECALCt_FIND_CURSOR</span><span class=cF0>);
|
|
<a name="l13"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(doc);
|
|
<a name="l14"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_entry->y == line_num - </span><span class=cFE>1</span><span class=cF0>)
|
|
<a name="l15"></a> res = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l16"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l17"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l18"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l19"></a>
|
|
<a name="l20"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
|
<a name="l21"></a>}
|
|
<a name="l22"></a>
|
|
<a name="l23"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocFind</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *haystack_doc, </span><span class=cF9>I64</span><span class=cF0> start_line_num=</span><span class=cF3>I64_MIN</span><span class=cF0>, </span><span class=cF1>U8</span><span class=cF0> *needle, </span><span class=cF9>I64</span><span class=cF0> match=</span><span class=cFE>1</span><span class=cF0>)
|
|
<a name="l24"></a>{</span><span class=cF2>//Find str by searching tags. Move cur_entry & center.</span><span class=cF0>
|
|
<a name="l25"></a> </span><span class=cF1>Bool</span><span class=cF0> res = </span><span class=cF3>FALSE</span><span class=cF0>, unlock;
|
|
<a name="l26"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
|
<a name="l27"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr;
|
|
<a name="l28"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
|
<a name="l29"></a>
|
|
<a name="l30"></a> </span><span class=cF1>if</span><span class=cF0> (haystack_doc)
|
|
<a name="l31"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l32"></a> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(haystack_doc);
|
|
<a name="l33"></a> </span><span class=cF1>if</span><span class=cF0> (start_line_num == </span><span class=cF3>I64_MIN</span><span class=cF0>)
|
|
<a name="l34"></a> {
|
|
<a name="l35"></a> res = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l36"></a> doc_e = haystack_doc->head.next;
|
|
<a name="l37"></a> }
|
|
<a name="l38"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l39"></a> {
|
|
<a name="l40"></a> res = </span><span class=cF5>DocGoToLine</span><span class=cF0>(haystack_doc, start_line_num);
|
|
<a name="l41"></a> doc_e = haystack_doc->cur_entry;
|
|
<a name="l42"></a> }
|
|
<a name="l43"></a> </span><span class=cF1>if</span><span class=cF0> (res)
|
|
<a name="l44"></a> {
|
|
<a name="l45"></a> </span><span class=cF1>if</span><span class=cF0> (needle)
|
|
<a name="l46"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l47"></a> res = </span><span class=cF3>FALSE</span><span class=cF0>;
|
|
<a name="l48"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != haystack_doc)
|
|
<a name="l49"></a> {
|
|
<a name="l50"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags & </span><span class=cF3>DOCEF_TAG</span><span class=cF0> && doc_e->tag && </span><span class=cF2>//TODO: handle multi-DocEntry strs</span><span class=cF0>
|
|
<a name="l51"></a> </span><span class=cF7>(</span><span class=cF0>ptr = </span><span class=cF5>StrIMatch</span><span class=cF0>(needle, doc_e->tag)</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l52"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l53"></a> i = ptr-doc_e->tag;
|
|
<a name="l54"></a> </span><span class=cF1>if</span><span class=cF0> (!--match)
|
|
<a name="l55"></a> {
|
|
<a name="l56"></a> haystack_doc->cur_entry = doc_e;
|
|
<a name="l57"></a> </span><span class=cF1>if</span><span class=cF0> (i < doc_e->min_col)
|
|
<a name="l58"></a> i = doc_e->min_col;
|
|
<a name="l59"></a> </span><span class=cF1>if</span><span class=cF0> (i > doc_e->max_col)
|
|
<a name="l60"></a> i = doc_e->max_col;
|
|
<a name="l61"></a> haystack_doc->cur_col = i;
|
|
<a name="l62"></a> res = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l63"></a> </span><span class=cF1>break</span><span class=cF0>;
|
|
<a name="l64"></a> }
|
|
<a name="l65"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l66"></a> doc_e = doc_e->next;
|
|
<a name="l67"></a> }
|
|
<a name="l68"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l69"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l70"></a> res = </span><span class=cF3>FALSE</span><span class=cF0>;
|
|
<a name="l71"></a> }
|
|
<a name="l72"></a> </span><span class=cF1>if</span><span class=cF0> (!res)
|
|
<a name="l73"></a> </span><span class=cF5>DocBottom</span><span class=cF0>(haystack_doc);
|
|
<a name="l74"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(haystack_doc);
|
|
<a name="l75"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l76"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(haystack_doc);
|
|
<a name="l77"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l78"></a>
|
|
<a name="l79"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
|
<a name="l80"></a>}
|
|
<a name="l81"></a>
|
|
<a name="l82"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocAnchorFind</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *haystack_doc, </span><span class=cF1>U8</span><span class=cF0> *needle_str)
|
|
<a name="l83"></a>{</span><span class=cF2>//Find named anchor. Move cur_entry & center.</span><span class=cF0>
|
|
<a name="l84"></a> </span><span class=cF1>Bool</span><span class=cF0> res = </span><span class=cF3>FALSE</span><span class=cF0>, unlock;
|
|
<a name="l85"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
|
<a name="l86"></a>
|
|
<a name="l87"></a> </span><span class=cF1>if</span><span class=cF0> (haystack_doc)
|
|
<a name="l88"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l89"></a> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(haystack_doc);
|
|
<a name="l90"></a> doc_e = haystack_doc->head.next;
|
|
<a name="l91"></a> </span><span class=cF1>if</span><span class=cF0> (needle_str)
|
|
<a name="l92"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != haystack_doc)
|
|
<a name="l93"></a> {
|
|
<a name="l94"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8 == </span><span class=cF3>DOCT_ANCHOR</span><span class=cF0> && doc_e->de_flags & </span><span class=cF3>DOCEF_AUX_STR</span><span class=cF0>)
|
|
<a name="l95"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l96"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrCompare</span><span class=cF7>(</span><span class=cF0>needle_str, doc_e->aux_str</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l97"></a> {
|
|
<a name="l98"></a> haystack_doc->cur_entry = doc_e;
|
|
<a name="l99"></a> haystack_doc->cur_col = doc_e->min_col;
|
|
<a name="l100"></a> res = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l101"></a> </span><span class=cF1>break</span><span class=cF0>;
|
|
<a name="l102"></a> }
|
|
<a name="l103"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l104"></a> doc_e = doc_e->next;
|
|
<a name="l105"></a> }
|
|
<a name="l106"></a> </span><span class=cF1>if</span><span class=cF0> (!res)
|
|
<a name="l107"></a> </span><span class=cF5>DocBottom</span><span class=cF0>(haystack_doc);
|
|
<a name="l108"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(haystack_doc);
|
|
<a name="l109"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l110"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(haystack_doc);
|
|
<a name="l111"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l112"></a>
|
|
<a name="l113"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
|
<a name="l114"></a>}
|
|
<a name="l115"></a>
|
|
<a name="l116"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>EdFindNext</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
|
<a name="l117"></a>{</span><span class=cF2>//Editor F3 find next, possibly doing replaces.</span><span class=cF0>
|
|
<a name="l118"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
|
<a name="l119"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr, *ptr2, *ptr3;
|
|
<a name="l120"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce = doc->cur_entry, *doc_e = doc_ce;
|
|
<a name="l121"></a> </span><span class=cF9>I64</span><span class=cF0> sf_flags;
|
|
<a name="l122"></a>
|
|
<a name="l123"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->match_case)
|
|
<a name="l124"></a> sf_flags = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l125"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l126"></a> sf_flags = </span><span class=cF3>SFF_IGNORE_CASE</span><span class=cF0>;
|
|
<a name="l127"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->whole_labels)
|
|
<a name="l128"></a> sf_flags |= </span><span class=cF3>SFG_WHOLE_LABELS</span><span class=cF0>;
|
|
<a name="l129"></a> </span><span class=cF1>do</span><span class=cF0>
|
|
<a name="l130"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l131"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e != doc)
|
|
<a name="l132"></a> {
|
|
<a name="l133"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags & </span><span class=cF3>DOCEF_TAG</span><span class=cF0> && doc_e->tag && !</span><span class=cF7>(</span><span class=cF0>doc_e->de_flags & (</span><span class=cF3>DOCEG_DONT_EDIT</span><span class=cF0> | </span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l134"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l135"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type & </span><span class=cF3>DOCET_SEL</span><span class=cF0> || !doc->find_replace->scan_sel_text)
|
|
<a name="l136"></a> {
|
|
<a name="l137"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->scan_fwd)
|
|
<a name="l138"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l139"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e == doc_ce)
|
|
<a name="l140"></a> {
|
|
<a name="l141"></a> ptr = doc_ce->tag + doc->cur_col + </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l142"></a> </span><span class=cF1>if</span><span class=cF0> (ptr - doc_ce->tag >= doc_ce->max_col)
|
|
<a name="l143"></a> </span><span class=cF1>goto</span><span class=cF0> fn_skip;
|
|
<a name="l144"></a> </span><span class=cF1>if</span><span class=cF0> (ptr - doc_ce->tag < doc_ce->min_col)
|
|
<a name="l145"></a> ptr = doc_ce->tag + doc_ce->min_col;
|
|
<a name="l146"></a> }
|
|
<a name="l147"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l148"></a> ptr = doc_e->tag;
|
|
<a name="l149"></a> </span><span class=cF1>if</span><span class=cF0> (ptr = </span><span class=cF5>StrFind</span><span class=cF7>(</span><span class=cF0>doc->find_replace->find_text, ptr, sf_flags</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l150"></a> {
|
|
<a name="l151"></a> doc->cur_entry = doc_e;
|
|
<a name="l152"></a> doc->cur_col = ptr-doc_e->tag;
|
|
<a name="l153"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_col >= doc_e->max_col)
|
|
<a name="l154"></a> doc->cur_col = doc_e->max_col - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l155"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_col < doc_e->min_col)
|
|
<a name="l156"></a> doc->cur_col = doc_e->min_col;
|
|
<a name="l157"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(doc);
|
|
<a name="l158"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l159"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l160"></a> </span><span class=cF1>return</span><span class=cF0>;
|
|
<a name="l161"></a> }
|
|
<a name="l162"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l163"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l164"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l165"></a> ptr2 = </span><span class=cF3>NULL</span><span class=cF0>;
|
|
<a name="l166"></a> ptr = doc_e->tag + doc_e->min_col;
|
|
<a name="l167"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e == doc_ce)
|
|
<a name="l168"></a> ptr3 = doc_ce->tag + doc->cur_col;
|
|
<a name="l169"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l170"></a> ptr3 = doc_e->tag + doc_e->max_col;
|
|
<a name="l171"></a> </span><span class=cF1>while</span><span class=cF0> (ptr = </span><span class=cF5>StrFind</span><span class=cF7>(</span><span class=cF0>doc->find_replace->find_text, ptr, sf_flags</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l172"></a> {
|
|
<a name="l173"></a> </span><span class=cF1>if</span><span class=cF0> (ptr >= ptr3)
|
|
<a name="l174"></a> </span><span class=cF1>break</span><span class=cF0>;
|
|
<a name="l175"></a> ptr2 = ptr++;
|
|
<a name="l176"></a> }
|
|
<a name="l177"></a> </span><span class=cF1>if</span><span class=cF0> (ptr2 && ptr2 < ptr3)
|
|
<a name="l178"></a> {
|
|
<a name="l179"></a> doc->cur_entry = doc_e;
|
|
<a name="l180"></a> doc->cur_col = ptr2 - doc_e->tag;
|
|
<a name="l181"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_col >= doc_e->max_col)
|
|
<a name="l182"></a> doc->cur_col = doc_e->max_col - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l183"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_col < doc_e->min_col)
|
|
<a name="l184"></a> doc->cur_col = doc_e->min_col;
|
|
<a name="l185"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(doc);
|
|
<a name="l186"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l187"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l188"></a>
|
|
<a name="l189"></a> </span><span class=cF1>return</span><span class=cF0>;
|
|
<a name="l190"></a> }
|
|
<a name="l191"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l192"></a> }
|
|
<a name="l193"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l194"></a> }
|
|
<a name="l195"></a>fn_skip:
|
|
<a name="l196"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->scan_fwd)
|
|
<a name="l197"></a> doc_e = doc_e->next;
|
|
<a name="l198"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l199"></a> doc_e = doc_e->last;
|
|
<a name="l200"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l201"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != doc_ce);
|
|
<a name="l202"></a>
|
|
<a name="l203"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l204"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l205"></a>}
|
|
<a name="l206"></a>
|
|
<a name="l207"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>EdSelAll</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF1>Bool</span><span class=cF0> sel)
|
|
<a name="l208"></a>{</span><span class=cF2>//Set state of </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KernelA.HH.html#l1090"><span class=cF4>DOCET_SEL</span></a><span class=cF2> on all entries.</span><span class=cF0>
|
|
<a name="l209"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
|
<a name="l210"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e = doc->head.next;
|
|
<a name="l211"></a>
|
|
<a name="l212"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != doc)
|
|
<a name="l213"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l214"></a> </span><span class=cF5>BEqual</span><span class=cF0>(&doc_e->type, </span><span class=cF3>DOCEt_SEL</span><span class=cF0>, sel);
|
|
<a name="l215"></a> doc_e = doc_e->next;
|
|
<a name="l216"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l217"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l218"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l219"></a>}
|
|
<a name="l220"></a>
|
|
<a name="l221"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>EdFindPaired</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF1>U8</span><span class=cF0> plus, </span><span class=cF1>U8</span><span class=cF0> minus,
|
|
<a name="l222"></a></span><span class=cF1>Bool</span><span class=cF0> forward, </span><span class=cF1>Bool</span><span class=cF0> abort_on_dbl_colon=</span><span class=cF3>FALSE</span><span class=cF0>)
|
|
<a name="l223"></a>{</span><span class=cF2>//Find { } or ( ) pair. Move cur_entry & center.</span><span class=cF0>
|
|
<a name="l224"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(doc), res = </span><span class=cF3>FALSE</span><span class=cF0>;
|
|
<a name="l225"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr;
|
|
<a name="l226"></a> </span><span class=cF9>I64</span><span class=cF0> ch, levels = </span><span class=cFE>0</span><span class=cF0>, colons = </span><span class=cFE>0</span><span class=cF0>, original_col = doc->cur_col;
|
|
<a name="l227"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce = doc->cur_entry, *doc_e = doc_ce, *original_ce = doc_ce;
|
|
<a name="l228"></a>
|
|
<a name="l229"></a> </span><span class=cF1>if</span><span class=cF0> (abort_on_dbl_colon && </span><span class=cF5>EdCurU8</span><span class=cF7>(</span><span class=cF0>doc</span><span class=cF7>)</span><span class=cF0> == </span><span class=cF6>':'</span><span class=cF0>)
|
|
<a name="l230"></a> colons = </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l231"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l232"></a> colons = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l233"></a> </span><span class=cF1>do</span><span class=cF0>
|
|
<a name="l234"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l235"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e != doc)
|
|
<a name="l236"></a> {
|
|
<a name="l237"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags & </span><span class=cF3>DOCEF_TAG</span><span class=cF0> && doc_e->tag && !</span><span class=cF7>(</span><span class=cF0>doc_e->de_flags & </span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l238"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l239"></a> </span><span class=cF1>if</span><span class=cF0> (forward)
|
|
<a name="l240"></a> {
|
|
<a name="l241"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e == doc_ce)
|
|
<a name="l242"></a> ptr = doc_e->tag + doc->cur_col + </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l243"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l244"></a> ptr = doc_e->tag;
|
|
<a name="l245"></a> </span><span class=cF1>if</span><span class=cF0> (ptr - doc_e->tag < doc_e->min_col)
|
|
<a name="l246"></a> ptr = doc_e->tag + doc_e->min_col;
|
|
<a name="l247"></a> </span><span class=cF1>if</span><span class=cF0> (ptr - doc_e->tag >= doc_e->max_col)
|
|
<a name="l248"></a> </span><span class=cF1>goto</span><span class=cF0> pa_skip;
|
|
<a name="l249"></a> </span><span class=cF1>while</span><span class=cF0> (ch = *ptr++)
|
|
<a name="l250"></a> </span><span class=cF1>if</span><span class=cF0> (abort_on_dbl_colon && ch == </span><span class=cF6>':'</span><span class=cF0>)
|
|
<a name="l251"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l252"></a> </span><span class=cF1>if</span><span class=cF0> (++colons == </span><span class=cFE>2</span><span class=cF0>)
|
|
<a name="l253"></a> {
|
|
<a name="l254"></a> doc->cur_entry = doc_e;
|
|
<a name="l255"></a> doc->cur_col = ptr - doc_e->tag - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l256"></a> </span><span class=cF5>EdCursorLeft</span><span class=cF0>(doc);
|
|
<a name="l257"></a> res = </span><span class=cF3>FALSE</span><span class=cF0>;
|
|
<a name="l258"></a> </span><span class=cF1>goto</span><span class=cF0> pa_done;
|
|
<a name="l259"></a> }
|
|
<a name="l260"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l261"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l262"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l263"></a> colons = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l264"></a> </span><span class=cF1>if</span><span class=cF0> (ch == plus)
|
|
<a name="l265"></a> levels++;
|
|
<a name="l266"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == minus)
|
|
<a name="l267"></a> {
|
|
<a name="l268"></a> </span><span class=cF1>if</span><span class=cF0> (!levels--)
|
|
<a name="l269"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l270"></a> doc->cur_entry = doc_e;
|
|
<a name="l271"></a> doc->cur_col = ptr - doc_e->tag - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l272"></a> res = doc->cur_entry != original_ce || doc->cur_col != original_col;
|
|
<a name="l273"></a> </span><span class=cF1>goto</span><span class=cF0> pa_done;
|
|
<a name="l274"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l275"></a> }
|
|
<a name="l276"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l277"></a> }
|
|
<a name="l278"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l279"></a> {
|
|
<a name="l280"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e == doc_ce)
|
|
<a name="l281"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l282"></a> ptr = doc_e->tag + doc->cur_col - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l283"></a> </span><span class=cF1>if</span><span class=cF0> (ptr - doc_e->tag >= doc_e->max_col)
|
|
<a name="l284"></a> ptr = doc_e->tag + doc_e->max_col - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l285"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l286"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l287"></a> ptr = doc_e->tag + doc_e->max_col - </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l288"></a> </span><span class=cF1>if</span><span class=cF0> (ptr - doc_e->tag < doc_e->min_col)
|
|
<a name="l289"></a> </span><span class=cF1>goto</span><span class=cF0> pa_skip;
|
|
<a name="l290"></a> </span><span class=cF1>while</span><span class=cF0> (ptr >= doc_e->tag + doc_e->min_col)
|
|
<a name="l291"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l292"></a> ch = *ptr--;
|
|
<a name="l293"></a> </span><span class=cF1>if</span><span class=cF0> (abort_on_dbl_colon && ch == </span><span class=cF6>':'</span><span class=cF0>)
|
|
<a name="l294"></a> {
|
|
<a name="l295"></a> </span><span class=cF1>if</span><span class=cF0> (++colons == </span><span class=cFE>2</span><span class=cF0>)
|
|
<a name="l296"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l297"></a> doc->cur_entry = doc_e;
|
|
<a name="l298"></a> doc->cur_col = ptr - doc_e->tag + </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l299"></a> res = </span><span class=cF3>FALSE</span><span class=cF0>;
|
|
<a name="l300"></a> </span><span class=cF1>goto</span><span class=cF0> pa_done;
|
|
<a name="l301"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l302"></a> }
|
|
<a name="l303"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l304"></a> {
|
|
<a name="l305"></a> colons = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l306"></a> </span><span class=cF1>if</span><span class=cF0> (ch == plus)
|
|
<a name="l307"></a> levels++;
|
|
<a name="l308"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == minus)
|
|
<a name="l309"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l310"></a> </span><span class=cF1>if</span><span class=cF0> (!levels--)
|
|
<a name="l311"></a> {
|
|
<a name="l312"></a> doc->cur_entry = doc_e;
|
|
<a name="l313"></a> doc->cur_col = ptr-doc_e->tag+</span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l314"></a> res = doc->cur_entry != original_ce || doc->cur_col != original_col;
|
|
<a name="l315"></a> </span><span class=cF1>goto</span><span class=cF0> pa_done;
|
|
<a name="l316"></a> }
|
|
<a name="l317"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l318"></a> }
|
|
<a name="l319"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l320"></a> }
|
|
<a name="l321"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l322"></a> }
|
|
<a name="l323"></a>pa_skip:
|
|
<a name="l324"></a> </span><span class=cF1>if</span><span class=cF0> (forward)
|
|
<a name="l325"></a> doc_e = doc_e->next;
|
|
<a name="l326"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l327"></a> doc_e = doc_e->last;
|
|
<a name="l328"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l329"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != doc_ce);
|
|
<a name="l330"></a>
|
|
<a name="l331"></a>pa_done:
|
|
<a name="l332"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
|
<a name="l333"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(doc);
|
|
<a name="l334"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l335"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l336"></a>
|
|
<a name="l337"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
|
<a name="l338"></a>}
|
|
<a name="l339"></a>
|
|
<a name="l340"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>EdGoToFun</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF1>Bool</span><span class=cF0> forward, </span><span class=cF1>Bool</span><span class=cF0> abort_on_dbl_colon)
|
|
<a name="l341"></a>{</span><span class=cF2>//Move cur_entry to start of cur fun and center.(Shoddy)</span><span class=cF0>
|
|
<a name="l342"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(doc), res = </span><span class=cF3>FALSE</span><span class=cF0>;
|
|
<a name="l343"></a> </span><span class=cF9>I64</span><span class=cF0> ch, levels, colons;
|
|
<a name="l344"></a>
|
|
<a name="l345"></a> </span><span class=cF1>if</span><span class=cF0> (forward)
|
|
<a name="l346"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l347"></a> levels = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l348"></a> colons = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l349"></a> </span><span class=cF1>while</span><span class=cF0> (doc->cur_entry != doc)
|
|
<a name="l350"></a> {
|
|
<a name="l351"></a> ch = </span><span class=cF5>EdCurU8</span><span class=cF0>(doc);
|
|
<a name="l352"></a> </span><span class=cF1>if</span><span class=cF0> (abort_on_dbl_colon && ch == </span><span class=cF6>':'</span><span class=cF0>)
|
|
<a name="l353"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l354"></a> </span><span class=cF1>if</span><span class=cF0> (++colons == </span><span class=cFE>2</span><span class=cF0>)
|
|
<a name="l355"></a> {
|
|
<a name="l356"></a> </span><span class=cF5>EdCursorLeft</span><span class=cF0>(doc);
|
|
<a name="l357"></a> </span><span class=cF1>break</span><span class=cF0>;
|
|
<a name="l358"></a> }
|
|
<a name="l359"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l360"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l361"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l362"></a> colons = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l363"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'{'</span><span class=cF0>)
|
|
<a name="l364"></a> levels++;
|
|
<a name="l365"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'}'</span><span class=cF0> && !levels--)
|
|
<a name="l366"></a> </span><span class=cF1>break</span><span class=cF0>;
|
|
<a name="l367"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l368"></a> </span><span class=cF5>EdCursorRight</span><span class=cF0>(doc);
|
|
<a name="l369"></a> }
|
|
<a name="l370"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
|
<a name="l371"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_entry != doc)
|
|
<a name="l372"></a> res = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l373"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l374"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l375"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l376"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>EdFindPaired</span><span class=cF7>(</span><span class=cF0>doc, </span><span class=cF6>'}'</span><span class=cF0>, </span><span class=cF6>'{'</span><span class=cF0>, </span><span class=cF3>FALSE</span><span class=cF0>, abort_on_dbl_colon</span><span class=cF7>)</span><span class=cF0>);
|
|
<a name="l377"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_entry != doc)
|
|
<a name="l378"></a> {
|
|
<a name="l379"></a> ch = </span><span class=cF5>EdCurU8</span><span class=cF0>(doc);
|
|
<a name="l380"></a> </span><span class=cF1>if</span><span class=cF0> (abort_on_dbl_colon && ch == </span><span class=cF6>':'</span><span class=cF0>)
|
|
<a name="l381"></a> res = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l382"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l383"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l384"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'{'</span><span class=cF0>)
|
|
<a name="l385"></a> res = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l386"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l387"></a> }
|
|
<a name="l388"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l389"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l390"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l391"></a>
|
|
<a name="l392"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
|
<a name="l393"></a>}
|
|
<a name="l394"></a>
|
|
<a name="l395"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>EdSelFun</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF1>Bool</span><span class=cF0> abort_on_dbl_colon=</span><span class=cF3>FALSE</span><span class=cF0>)
|
|
<a name="l396"></a>{</span><span class=cF2>//Set </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KernelA.HH.html#l1090"><span class=cF4>DOCET_SEL</span></a><span class=cF2> on all entries in cur fun.</span><span class=cF0>
|
|
<a name="l397"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
|
<a name="l398"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr;
|
|
<a name="l399"></a> </span><span class=cF9>I64</span><span class=cF0> ch, levels = </span><span class=cFE>0</span><span class=cF0>, colons = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l400"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
|
<a name="l401"></a>
|
|
<a name="l402"></a> </span><span class=cF5>EdSelAll</span><span class=cF0>(doc, </span><span class=cF3>FALSE</span><span class=cF0>);
|
|
<a name="l403"></a> </span><span class=cF5>EdGoToFun</span><span class=cF0>(doc, </span><span class=cF3>FALSE</span><span class=cF0>, abort_on_dbl_colon);
|
|
<a name="l404"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>EdCurU8</span><span class=cF7>(</span><span class=cF0>doc</span><span class=cF7>)</span><span class=cF0> == </span><span class=cF6>'{'</span><span class=cF0>)
|
|
<a name="l405"></a> levels--;
|
|
<a name="l406"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (abort_on_dbl_colon && </span><span class=cF5>EdCurU8</span><span class=cF7>(</span><span class=cF0>doc</span><span class=cF7>)</span><span class=cF0> == </span><span class=cF6>':'</span><span class=cF0>)
|
|
<a name="l407"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l408"></a> </span><span class=cF5>EdCursorRight</span><span class=cF0>(doc);
|
|
<a name="l409"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>EdCurU8</span><span class=cF7>(</span><span class=cF0>doc</span><span class=cF7>)</span><span class=cF0> == </span><span class=cF6>':'</span><span class=cF0>)
|
|
<a name="l410"></a> </span><span class=cF5>EdCursorRight</span><span class=cF0>(doc);
|
|
<a name="l411"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l412"></a> doc_e = doc->cur_entry;
|
|
<a name="l413"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != doc)
|
|
<a name="l414"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l415"></a> doc_e->type |= </span><span class=cF3>DOCET_SEL</span><span class=cF0>;
|
|
<a name="l416"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags & </span><span class=cF3>DOCEF_TAG</span><span class=cF0> && doc_e->tag)
|
|
<a name="l417"></a> {
|
|
<a name="l418"></a> ptr = doc_e->tag;
|
|
<a name="l419"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e == doc->cur_entry)
|
|
<a name="l420"></a> ptr += doc->cur_col;
|
|
<a name="l421"></a> </span><span class=cF1>while</span><span class=cF0> (ch = *ptr++)
|
|
<a name="l422"></a> </span><span class=cF1>if</span><span class=cF0> (abort_on_dbl_colon && ch == </span><span class=cF6>':'</span><span class=cF0>)
|
|
<a name="l423"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l424"></a> </span><span class=cF1>if</span><span class=cF0> (++colons == </span><span class=cFE>2</span><span class=cF0>)
|
|
<a name="l425"></a> </span><span class=cF1>goto</span><span class=cF0> sf_done;
|
|
<a name="l426"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l427"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l428"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l429"></a> colons = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l430"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'{'</span><span class=cF0>)
|
|
<a name="l431"></a> levels++;
|
|
<a name="l432"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'}'</span><span class=cF0> && !levels--)
|
|
<a name="l433"></a> </span><span class=cF1>goto</span><span class=cF0> sf_done;
|
|
<a name="l434"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l435"></a> }
|
|
<a name="l436"></a> doc_e = doc_e->next;
|
|
<a name="l437"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l438"></a>sf_done:
|
|
<a name="l439"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
|
<a name="l440"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l441"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l442"></a>}
|
|
<a name="l443"></a>
|
|
<a name="l444"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RSAC_REPLACE</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>
|
|
<a name="l445"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RSAC_SKIP</span><span class=cF0> </span><span class=cFE>1</span><span class=cF0>
|
|
<a name="l446"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>RSAC_ALL</span><span class=cF0> </span><span class=cFE>2</span><span class=cF0>
|
|
<a name="l447"></a>
|
|
<a name="l448"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpReplaceSkipAllCancel</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>, </span><span class=cF1>U8</span><span class=cF0> *footer=</span><span class=cF3>NULL</span><span class=cF0>)
|
|
<a name="l449"></a>{
|
|
<a name="l450"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
|
<a name="l451"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc = </span><span class=cF5>DocNew</span><span class=cF0>;
|
|
<a name="l452"></a>
|
|
<a name="l453"></a> </span><span class=cF1>if</span><span class=cF0> (header)
|
|
<a name="l454"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc, </span><span class=cF6>"%s"</span><span class=cF0>, header);
|
|
<a name="l455"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
|
<a name="l456"></a> </span><span class=cF6>"$CM+LX,1,4$$BT,\"REPLACE\",LE=RSAC_REPLACE$"</span><span class=cF0>
|
|
<a name="l457"></a> </span><span class=cF6>"$CM+LX,17,0$$BT,\"SKIP\",LE=RSAC_SKIP$"</span><span class=cF0>
|
|
<a name="l458"></a> </span><span class=cF6>"$CM+LX,1,3$$BT,\"ALL\",LE=RSAC_ALL$"</span><span class=cF0>
|
|
<a name="l459"></a> </span><span class=cF6>"$CM+LX,17,0$$BT,\"CANCEL\",LE=DOCM_CANCEL$\n"</span><span class=cF0>);
|
|
<a name="l460"></a> </span><span class=cF1>if</span><span class=cF0> (footer)
|
|
<a name="l461"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc, </span><span class=cF6>"%s"</span><span class=cF0>, footer);
|
|
<a name="l462"></a> i = </span><span class=cF5>PopUpMenu</span><span class=cF0>(doc);
|
|
<a name="l463"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
|
<a name="l464"></a>
|
|
<a name="l465"></a> </span><span class=cF1>return</span><span class=cF0> i;
|
|
<a name="l466"></a>}
|
|
<a name="l467"></a>
|
|
<a name="l468"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>EdFindReplace</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
|
<a name="l469"></a>{
|
|
<a name="l470"></a> </span><span class=cF1>Bool</span><span class=cF0> found, unlock;
|
|
<a name="l471"></a> </span><span class=cF9>I64</span><span class=cF0> cmd, i, j, plen, rlen, dlen, res = -</span><span class=cFE>1</span><span class=cF0>, sf_flags;
|
|
<a name="l472"></a> </span><span class=cF1>U8</span><span class=cF0> *src, *dst, *dst2;
|
|
<a name="l473"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce, *doc_e, *doc_marker = </span><span class=cF3>NULL</span><span class=cF0>;
|
|
<a name="l474"></a>
|
|
<a name="l475"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->prompt)
|
|
<a name="l476"></a> cmd = </span><span class=cF3>RSAC_REPLACE</span><span class=cF0>;
|
|
<a name="l477"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l478"></a> cmd = </span><span class=cF3>RSAC_ALL</span><span class=cF0>;
|
|
<a name="l479"></a> </span><span class=cF1>if</span><span class=cF0> (!doc->find_replace->prompt || </span><span class=cF5>DocForm</span><span class=cF7>(</span><span class=cF0>doc->find_replace</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l480"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l481"></a> res = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l482"></a> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
|
<a name="l483"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->match_case || doc->find_replace->local_var)
|
|
<a name="l484"></a> sf_flags = </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l485"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l486"></a> sf_flags = </span><span class=cF3>SFF_IGNORE_CASE</span><span class=cF0>;
|
|
<a name="l487"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->whole_labels || doc->find_replace->local_var)
|
|
<a name="l488"></a> sf_flags |= </span><span class=cF3>SFG_WHOLE_LABELS</span><span class=cF0>;
|
|
<a name="l489"></a>
|
|
<a name="l490"></a> </span><span class=cF1>if</span><span class=cF0> (i = doc->find_replace->filter_lines)
|
|
<a name="l491"></a> {
|
|
<a name="l492"></a> doc_ce = doc->head.next;
|
|
<a name="l493"></a> </span><span class=cF1>while</span><span class=cF0> (doc_ce != doc)
|
|
<a name="l494"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l495"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->de_flags & </span><span class=cF3>DOCEF_TAG</span><span class=cF0> && doc_ce->tag && !</span><span class=cF7>(</span><span class=cF0>doc_ce->de_flags & </span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF7>)</span><span class=cF0> &&
|
|
<a name="l496"></a> </span><span class=cF5>StrFind</span><span class=cF7>(</span><span class=cF0>doc->find_replace->find_text, doc_ce->tag, sf_flags</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l497"></a> {
|
|
<a name="l498"></a> doc_ce->type |= </span><span class=cF3>DOCET_SEL</span><span class=cF0>;
|
|
<a name="l499"></a> res++;
|
|
<a name="l500"></a> }
|
|
<a name="l501"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l502"></a> doc_ce->type &= ~</span><span class=cF3>DOCET_SEL</span><span class=cF0>;
|
|
<a name="l503"></a> doc_ce = doc_ce->next;
|
|
<a name="l504"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l505"></a>
|
|
<a name="l506"></a> doc_ce = doc->head.next;
|
|
<a name="l507"></a> </span><span class=cF1>while</span><span class=cF0> (doc_ce != doc)
|
|
<a name="l508"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l509"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>doc_ce->de_flags & </span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l510"></a> {
|
|
<a name="l511"></a> found = </span><span class=cF3>FALSE</span><span class=cF0>;
|
|
<a name="l512"></a>
|
|
<a name="l513"></a> doc_e = doc_ce;
|
|
<a name="l514"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != doc && doc_e->y > doc_ce->y - i)
|
|
<a name="l515"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l516"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type & </span><span class=cF3>DOCET_SEL</span><span class=cF0>)
|
|
<a name="l517"></a> {
|
|
<a name="l518"></a> found = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l519"></a> </span><span class=cF1>break</span><span class=cF0>;
|
|
<a name="l520"></a> }
|
|
<a name="l521"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l522"></a> doc_e = doc_e->last;
|
|
<a name="l523"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l524"></a>
|
|
<a name="l525"></a> </span><span class=cF1>if</span><span class=cF0> (!found)
|
|
<a name="l526"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l527"></a> doc_e = doc_ce;
|
|
<a name="l528"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != doc && doc_e->y < doc_ce->y + i)
|
|
<a name="l529"></a> {
|
|
<a name="l530"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type & </span><span class=cF3>DOCET_SEL</span><span class=cF0>)
|
|
<a name="l531"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l532"></a> found = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l533"></a> </span><span class=cF1>break</span><span class=cF0>;
|
|
<a name="l534"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l535"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l536"></a> doc_e = doc_e->next;
|
|
<a name="l537"></a> }
|
|
<a name="l538"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l539"></a>
|
|
<a name="l540"></a> </span><span class=cF1>if</span><span class=cF0> (!found)
|
|
<a name="l541"></a> doc_ce->de_flags |= </span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF0>;
|
|
<a name="l542"></a> }
|
|
<a name="l543"></a>
|
|
<a name="l544"></a> doc_ce = doc_ce->next;
|
|
<a name="l545"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l546"></a> </span><span class=cF5>EdSelAll</span><span class=cF0>(doc, </span><span class=cF3>FALSE</span><span class=cF0>);
|
|
<a name="l547"></a> </span><span class=cF1>goto</span><span class=cF0> fr_unlock_done;
|
|
<a name="l548"></a> }
|
|
<a name="l549"></a>
|
|
<a name="l550"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->local_var)
|
|
<a name="l551"></a> </span><span class=cF5>EdSelFun</span><span class=cF0>(doc);
|
|
<a name="l552"></a>
|
|
<a name="l553"></a> </span><span class=cF1>if</span><span class=cF0> (!doc->find_replace->replace && !doc->find_replace->local_var)
|
|
<a name="l554"></a> {
|
|
<a name="l555"></a> </span><span class=cF5>EdFindNext</span><span class=cF0>(doc);
|
|
<a name="l556"></a> </span><span class=cF1>goto</span><span class=cF0> fr_unlock_done;
|
|
<a name="l557"></a> }
|
|
<a name="l558"></a> plen = </span><span class=cF5>StrLen</span><span class=cF0>(doc->find_replace->find_text);
|
|
<a name="l559"></a> </span><span class=cF1>if</span><span class=cF0> (!plen)
|
|
<a name="l560"></a> </span><span class=cF1>goto</span><span class=cF0> fr_unlock_done;
|
|
<a name="l561"></a> rlen = </span><span class=cF5>StrLen</span><span class=cF0>(doc->find_replace->replace_text);
|
|
<a name="l562"></a> </span><span class=cF1>if</span><span class=cF0> (doc->head.next != doc)
|
|
<a name="l563"></a> {
|
|
<a name="l564"></a> doc_e = doc_marker = </span><span class=cF5>DocSplitTag</span><span class=cF0>(doc, doc->cur_entry, doc->cur_col,
|
|
<a name="l565"></a> doc->cur_entry->x + doc->cur_col, doc->cur_entry->y, </span><span class=cF3>DOCT_MARKER</span><span class=cF0>);
|
|
<a name="l566"></a> </span><span class=cF1>do</span><span class=cF0>
|
|
<a name="l567"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l568"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e == doc)
|
|
<a name="l569"></a> {
|
|
<a name="l570"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->scan_fwd)
|
|
<a name="l571"></a> doc_e = doc_e->next;
|
|
<a name="l572"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l573"></a> doc_e = doc_e->last;
|
|
<a name="l574"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e == doc_marker)
|
|
<a name="l575"></a> </span><span class=cF1>break</span><span class=cF0>;
|
|
<a name="l576"></a> }
|
|
<a name="l577"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8 == </span><span class=cF3>DOCT_TEXT</span><span class=cF0> &&
|
|
<a name="l578"></a> !</span><span class=cF7>(</span><span class=cF0>doc_e->de_flags & (</span><span class=cF3>DOCEG_DONT_EDIT</span><span class=cF0> | </span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> &&
|
|
<a name="l579"></a> </span><span class=cF7>(</span><span class=cF0>doc_e->type & </span><span class=cF3>DOCET_SEL</span><span class=cF0> || !doc->find_replace->scan_sel_text && !doc->find_replace->local_var</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l580"></a> {
|
|
<a name="l581"></a> src = doc_e->tag;
|
|
<a name="l582"></a> </span><span class=cF1>while</span><span class=cF0> (src)
|
|
<a name="l583"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l584"></a> src = </span><span class=cF5>StrFind</span><span class=cF0>(doc->find_replace->find_text, src, sf_flags);
|
|
<a name="l585"></a> </span><span class=cF1>if</span><span class=cF0> (src)
|
|
<a name="l586"></a> {
|
|
<a name="l587"></a> doc->cur_col = src - doc_e->tag;
|
|
<a name="l588"></a> doc->cur_entry = doc_e;
|
|
<a name="l589"></a> </span><span class=cF1>if</span><span class=cF0> (cmd != </span><span class=cF3>RSAC_ALL</span><span class=cF0>)
|
|
<a name="l590"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(doc);
|
|
<a name="l591"></a> </span><span class=cF1>if</span><span class=cF0> (cmd != </span><span class=cF3>RSAC_ALL</span><span class=cF0>)
|
|
<a name="l592"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l593"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l594"></a> cmd = </span><span class=cF5>PopUpReplaceSkipAllCancel</span><span class=cF0>(</span><span class=cF6>""</span><span class=cF0>);
|
|
<a name="l595"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
|
<a name="l596"></a> </span><span class=cF1>if</span><span class=cF0> (cmd < </span><span class=cFE>0</span><span class=cF0>)
|
|
<a name="l597"></a> </span><span class=cF1>goto</span><span class=cF0> fr_unlock_done;
|
|
<a name="l598"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l599"></a> doc_e = doc->cur_entry;
|
|
<a name="l600"></a> src = doc->cur_col + doc_e->tag;
|
|
<a name="l601"></a> </span><span class=cF1>if</span><span class=cF0> (cmd == </span><span class=cF3>RSAC_REPLACE</span><span class=cF0> || cmd == </span><span class=cF3>RSAC_ALL</span><span class=cF0>)
|
|
<a name="l602"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l603"></a> dlen = </span><span class=cF5>StrLen</span><span class=cF0>(doc_e->tag);
|
|
<a name="l604"></a> doc_e->max_col = dlen + rlen - plen;
|
|
<a name="l605"></a> dst = </span><span class=cF5>MAlloc</span><span class=cF0>(doc_e->max_col + </span><span class=cFE>1</span><span class=cF0>, doc->mem_task);
|
|
<a name="l606"></a> dst2 = dst;
|
|
<a name="l607"></a> j = src - doc_e->tag;
|
|
<a name="l608"></a> </span><span class=cF1>for</span><span class=cF0> (i = </span><span class=cFE>0</span><span class=cF0>; i < j; i++)
|
|
<a name="l609"></a> *dst++ = doc_e->tag[i];
|
|
<a name="l610"></a> </span><span class=cF1>for</span><span class=cF0> (i = </span><span class=cFE>0</span><span class=cF0>; i < rlen; i++)
|
|
<a name="l611"></a> *dst++ = doc->find_replace->replace_text[i];
|
|
<a name="l612"></a> src = dst;
|
|
<a name="l613"></a> </span><span class=cF1>for</span><span class=cF0> (i = j + plen; i <= dlen; i++)
|
|
<a name="l614"></a> *dst++ = doc_e->tag[i];
|
|
<a name="l615"></a> </span><span class=cF5>Free</span><span class=cF0>(doc_e->tag);
|
|
<a name="l616"></a> doc_e->tag = dst2;
|
|
<a name="l617"></a> doc->cur_col = src - doc_e->tag;
|
|
<a name="l618"></a> doc->cur_entry = doc_e;
|
|
<a name="l619"></a> </span><span class=cF1>if</span><span class=cF0> (cmd != </span><span class=cF3>RSAC_ALL</span><span class=cF0>)
|
|
<a name="l620"></a> {
|
|
<a name="l621"></a> </span><span class=cF5>DocRemSoftNewLines</span><span class=cF0>(doc, doc->cur_entry);
|
|
<a name="l622"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
|
<a name="l623"></a> }
|
|
<a name="l624"></a> doc_e = doc->cur_entry;
|
|
<a name="l625"></a> src = doc->cur_col + doc_e->tag;
|
|
<a name="l626"></a> res++;
|
|
<a name="l627"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l628"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l629"></a> src++;
|
|
<a name="l630"></a> }
|
|
<a name="l631"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l632"></a> }
|
|
<a name="l633"></a> </span><span class=cF1>if</span><span class=cF0> (doc->find_replace->scan_fwd)
|
|
<a name="l634"></a> doc_e = doc_e->next;
|
|
<a name="l635"></a> </span><span class=cF1>else</span><span class=cF0>
|
|
<a name="l636"></a> doc_e = doc_e->last;
|
|
<a name="l637"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l638"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != doc_marker);
|
|
<a name="l639"></a> }
|
|
<a name="l640"></a>fr_unlock_done:
|
|
<a name="l641"></a> </span><span class=cF1>if</span><span class=cF0> (doc_marker)
|
|
<a name="l642"></a> </span><span class=cF5>DocEntryDel</span><span class=cF0>(doc, doc_marker);
|
|
<a name="l643"></a> </span><span class=cF5>DocRemSoftNewLines</span><span class=cF0>(doc, </span><span class=cF3>NULL</span><span class=cF0>);
|
|
<a name="l644"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
|
<a name="l645"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(doc);
|
|
<a name="l646"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l647"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l648"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l649"></a>
|
|
<a name="l650"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
|
<a name="l651"></a>}
|
|
<a name="l652"></a>
|
|
<a name="l653"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>EdReplace</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF1>U8</span><span class=cF0> *find, </span><span class=cF1>U8</span><span class=cF0> *replace, </span><span class=cF1>Bool</span><span class=cF0> sel=</span><span class=cF3>TRUE</span><span class=cF0>, </span><span class=cF1>Bool</span><span class=cF0> match_case=</span><span class=cF3>TRUE</span><span class=cF0>, </span><span class=cF1>Bool</span><span class=cF0> whole_labels=</span><span class=cF3>FALSE</span><span class=cF0>)
|
|
<a name="l654"></a>{</span><span class=cF2>//Find & replace using editor's cmd.</span><span class=cF0>
|
|
<a name="l655"></a> </span><span class=cF9>CEdFindText</span><span class=cF0> old_find_replace;
|
|
<a name="l656"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock;
|
|
<a name="l657"></a> </span><span class=cF9>I64</span><span class=cF0> i, res = -</span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l658"></a>
|
|
<a name="l659"></a> </span><span class=cF1>if</span><span class=cF0> (!doc)
|
|
<a name="l660"></a> </span><span class=cF1>return</span><span class=cF0> -</span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l661"></a> unlock = </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
|
<a name="l662"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(&old_find_replace, doc->find_replace, </span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CEdFindText</span><span class=cF7>)</span><span class=cF0>);
|
|
<a name="l663"></a> </span><span class=cF5>MemSet</span><span class=cF0>(doc->find_replace, </span><span class=cFE>0</span><span class=cF0>, </span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CEdFindText</span><span class=cF7>)</span><span class=cF0>);
|
|
<a name="l664"></a> i = </span><span class=cF5>StrLen</span><span class=cF0>(find);
|
|
<a name="l665"></a> </span><span class=cF1>if</span><span class=cF0> (i < </span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CEdFindText</span><span class=cF0>.find_text</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l666"></a> </span><span class=cF7>{</span><span class=cF0>
|
|
<a name="l667"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(doc->find_replace->find_text, find, i + </span><span class=cFE>1</span><span class=cF0>);
|
|
<a name="l668"></a> i = </span><span class=cF5>StrLen</span><span class=cF0>(replace);
|
|
<a name="l669"></a> </span><span class=cF1>if</span><span class=cF0> (i < </span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CEdFindText</span><span class=cF0>.replace_text</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l670"></a> {
|
|
<a name="l671"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(doc->find_replace->replace_text, replace, i + </span><span class=cFE>1</span><span class=cF0>);
|
|
<a name="l672"></a> doc->find_replace->replace = </span><span class=cF3>TRUE</span><span class=cF0>;
|
|
<a name="l673"></a> doc->find_replace->scan_sel_text = sel;
|
|
<a name="l674"></a> doc->find_replace->match_case = match_case;
|
|
<a name="l675"></a> doc->find_replace->whole_labels = whole_labels;
|
|
<a name="l676"></a> doc->find_replace->prompt = </span><span class=cF3>FALSE</span><span class=cF0>;
|
|
<a name="l677"></a> res = </span><span class=cF5>EdFindReplace</span><span class=cF0>(doc);
|
|
<a name="l678"></a> }
|
|
<a name="l679"></a> </span><span class=cF7>}</span><span class=cF0>
|
|
<a name="l680"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(doc->find_replace, &old_find_replace, </span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CEdFindText</span><span class=cF7>)</span><span class=cF0>);
|
|
<a name="l681"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
|
<a name="l682"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
|
<a name="l683"></a>
|
|
<a name="l684"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
|
<a name="l685"></a>}
|
|
<a name="l686"></a>
|
|
<a name="l687"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CEdLineGoTo</span><span class=cF0>
|
|
<a name="l688"></a>{
|
|
<a name="l689"></a> </span><span class=cF9>I64</span><span class=cF0> line format </span><span class=cF6>"$DA,A=\"Go to Line:%d\"$"</span><span class=cF0>;
|
|
<a name="l690"></a>};
|
|
<a name="l691"></a>
|
|
<a name="l692"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>EdGoToLine</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
|
<a name="l693"></a>{</span><span class=cF2>//Prompt with form and go to line num.</span><span class=cF0>
|
|
<a name="l694"></a> </span><span class=cF9>CEdLineGoTo</span><span class=cF0> gtl;
|
|
<a name="l695"></a>
|
|
<a name="l696"></a> gtl.line = </span><span class=cFE>1</span><span class=cF0>;
|
|
<a name="l697"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>DocForm</span><span class=cF7>(</span><span class=cF0>&gtl</span><span class=cF7>)</span><span class=cF0>)
|
|
<a name="l698"></a> </span><span class=cF5>DocGoToLine</span><span class=cF0>(doc, gtl.line);
|
|
<a name="l699"></a>}
|
|
</span></pre></body>
|
|
</html>
|