<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
<style>.content {
padding: 20px;
height: 100%;
width: 944px;
margin-left: auto;
margin-right: auto;
}
.fold {
width: 20px;
float: left;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.number {
width: 45px;
float: left;
margin-right: 10px;
text-align: right;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line {
}
.content {
font-family: "Monospace";
font-size: 1em;
background: #3f3f3f;
color: White;
width: 944px;
padding: 20px;
height: 100%;
margin-left: auto;
margin-right: auto;
}
font.Alert {
color: Yellow;
font-weight: bold;
}
font.Annotation {
color: Yellow;
font-style: italic;
}
font.Attribute {
color: LightPink;
}
font.BaseN {
color: Gold;
}
font.BuiltIn {
color: Coral;
}
font.Char {
color: Cyan;
}
font.Comment {
color: Beige;
font-style: italic;
}
font.CommentVar {
color: LightBlue;
font-style: italic;
}
font.Constant {
color: White;
font-weight: bold;
}
font.ControlFlow {
color: DeepPink;
}
font.DataType {
color: CadetBlue;
}
font.DecVal {
color: MediumPurple;
font-weight: bold;
}
font.Documentation {
color: Gold;
font-style: italic;
}
font.Error {
color: Red;
font-weight: bold;
}
font.Extension {
color: DarkGray;
font-weight: bold;
}
font.Float {
color: DarkViolet;
font-weight: bold;
}
font.Function {
color: RosyBrown;
}
font.Import {
color: PaleVioletRed;
}
font.Information {
color: LightGreen;
font-style: italic;
}
font.Keyword {
color: LightGreen;
font-weight: bold;
}
font.Normal {
color: White;
}
font.Operator {
color: Magenta;
}
font.Others {
color: GreenYellow;
}
font.Preprocessor {
color: DarkSeaGreen ;
font-weight: bold;
}
font.RegionMarker {
color: Plum;
}
font.SpecialChar {
color: Plum;
font-weight: bold;
}
font.SpecialString {
color: LightBlue;
}
font.String {
color: MediumAquaMarine;
}
font.Variable {
color: Turquoise;
font-weight: bold;
}
font.VerbatimString {
color: LightSkyBlue;
}
font.Warning {
color: Brown;
font-weight: bold;
}
</style>
<title>Line Numbers/Theme DarkGray</title>
</head>
<body>
<div class="content">
<div id="1" class="line"><div class="number">1</div><font class="Keyword">package</font><font class="Normal"> </font><font class="Function">Syntax::Kamelon</font><font class="Normal">::</font><font class="Function">Wx</font><font class="Normal">::</font><font class="Function">PluggableTextCtrl</font><font class="Normal">;</font></br></div>
<div id="2" class="line"><div class="number">2</div></br></div>
<div id="3" class="line"><div class="number">3</div><font class="Function">use</font><font class="Normal"> </font><font class="Keyword">strict</font><font class="Normal">;</font></br></div>
<div id="4" class="line"><div class="number">4</div><font class="Function">use</font><font class="Normal"> </font><font class="Keyword">warnings</font><font class="Normal">;</font></br></div>
<div id="5" class="line"><div class="number">5</div><font class="Function">use</font><font class="Normal"> Carp;</font></br></div>
<div id="6" class="line"><div class="number">6</div></br></div>
<div id="7" class="line"><div class="number">7</div><font class="Function">use</font><font class="Normal"> </font><font class="Keyword">vars</font><font class="Normal"> </font><font class="Operator">qw(</font><font class="Normal">$VERSION</font><font class="Operator">)</font><font class="Normal">;</font></br></div>
<div id="8" class="line"><div class="number">8</div><font class="DataType">$VERSION</font><font class="Normal">=</font><font class="Operator">"</font><font class="SpecialString">0.01</font><font class="Operator">"</font><font class="Normal">;</font></br></div>
<div id="9" class="line"><div class="number">9</div></br></div>
<div id="10" class="line"><div class="number">10</div><font class="Function">use</font><font class="Normal"> Wx </font><font class="Operator">qw(</font><font class="Normal"> :textctrl :font :colour </font><font class="Operator">)</font><font class="Normal">;</font></br></div>
<div id="11" class="line"><div class="number">11</div><font class="Function">use</font><font class="Normal"> </font><font class="Function">Wx::DND</font><font class="Normal">;</font></br></div>
<div id="12" class="line"><div class="number">12</div><font class="Function">use</font><font class="Normal"> Wx </font><font class="Operator">qw(</font><font class="Normal"> wxTheClipboard </font><font class="Operator">)</font><font class="Normal">;</font></br></div>
<div id="13" class="line"><div class="number">13</div><font class="Function">use</font><font class="Normal"> base </font><font class="Operator">qw(</font><font class="Normal"> Wx::TextCtrl </font><font class="Operator">)</font><font class="Normal">;</font></br></div>
<div id="14" class="line"><div class="number">14</div><font class="Function">use</font><font class="Normal"> </font><font class="Function">Wx::Event</font><font class="Normal"> </font><font class="Operator">qw(</font><font class="Normal"> EVT_CHAR </font><font class="Operator">)</font><font class="Normal">;</font></br></div>
<div id="15" class="line"><div class="number">15</div></br></div>
<div id="16" class="line"><div class="number">16</div><font class="Function">require</font><font class="Normal"> </font><font class="Function">Syntax::Kamelon</font><font class="Normal">::</font><font class="Function">Wx</font><font class="Normal">::</font><font class="Function">PluggableTextCtrl</font><font class="Normal">::</font><font class="Function">KeyEchoes</font><font class="Normal">;</font></br></div>
<div id="17" class="line"><div class="number">17</div><font class="Function">require</font><font class="Normal"> </font><font class="Function">Syntax::Kamelon</font><font class="Normal">::</font><font class="Function">Wx</font><font class="Normal">::</font><font class="Function">PluggableTextCtrl</font><font class="Normal">::</font><font class="Function">UndoRedo</font><font class="Normal">;</font></br></div>
<div id="18" class="line"><div class="number">18</div><font class="Function">require</font><font class="Normal"> </font><font class="Function">Syntax::Kamelon</font><font class="Normal">::</font><font class="Function">Wx</font><font class="Normal">::</font><font class="Function">PluggableTextCtrl</font><font class="Normal">::</font><font class="Function">Highlighter</font><font class="Normal">;</font></br></div>
<div id="19" class="line"><div class="number">19</div></br></div>
<div id="20" class="line"><div class="number">20</div><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$defaultfont</font><font class="Normal"> = [</font><font class="DecVal">10</font><font class="Normal">, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, </font><font class="DecVal">0</font><font class="Normal">];</font></br></div>
<div id="21" class="line"><div class="number">21</div></br></div>
<div id="22" class="line"><div class="number">22</div><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$debug</font><font class="Normal"> = </font><font class="DecVal">0</font><font class="Normal">;</font></br></div>
<div id="23" class="line"><div class="number">23</div></br></div>
<div id="24" class="line"><div class="number">24</div><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$debug</font><font class="Normal">) {</font></br></div>
<div id="25" class="line"><div class="number">25</div><font class="Normal"> </font><font class="Function">use</font><font class="Normal"> </font><font class="Function">Data::Dumper</font><font class="Normal">;</font></br></div>
<div id="26" class="line"><div class="number">26</div><font class="Normal">}</font></br></div>
<div id="27" class="line"><div class="number">27</div></br></div>
<div id="28" class="line"><div class="number">28</div><font class="Keyword">sub </font><font class="Function">new</font><font class="Normal"> {</font></br></div>
<div id="29" class="line"><div class="number">29</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$class</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="30" class="line"><div class="number">30</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="DataType">$class</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">new</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="31" class="line"><div class="number">31</div></br></div>
<div id="32" class="line"><div class="number">32</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{CALLBACK} = </font><font class="Keyword">sub </font><font class="Normal">{};</font></br></div>
<div id="33" class="line"><div class="number">33</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{COMMANDS} = {</font></br></div>
<div id="34" class="line"><div class="number">34</div><font class="Normal"> </font><font class="Operator">'</font><font class="String">doremove</font><font class="Operator">'</font><font class="Normal"> => \&DoRemove,</font></br></div>
<div id="35" class="line"><div class="number">35</div><font class="Normal"> </font><font class="Operator">'</font><font class="String">doreplace</font><font class="Operator">'</font><font class="Normal"> => \&DoReplace,</font></br></div>
<div id="36" class="line"><div class="number">36</div><font class="Normal"> </font><font class="Operator">'</font><font class="String">dowrite</font><font class="Operator">'</font><font class="Normal"> => \&DoWrite,</font></br></div>
<div id="37" class="line"><div class="number">37</div><font class="Normal"> };</font></br></div>
<div id="38" class="line"><div class="number">38</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{LISTENING} = </font><font class="DecVal">0</font><font class="Normal">;</font></br></div>
<div id="39" class="line"><div class="number">39</div><font class="Normal"> </font></br></div>
<div id="40" class="line"><div class="number">40</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{OVRMODE} = </font><font class="DecVal">0</font><font class="Normal">;</font></br></div>
<div id="41" class="line"><div class="number">41</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS} = [];</font></br></div>
<div id="42" class="line"><div class="number">42</div></br></div>
<div id="43" class="line"><div class="number">43</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SetFont</font><font class="Normal">( </font><font class="Function">Wx::Font</font><font class="Normal">->new(</font><font class="DataType">@$defaultfont</font><font class="Normal">) );</font></br></div>
<div id="44" class="line"><div class="number">44</div><font class="Normal"> EVT_CHAR(</font><font class="DataType">$self</font><font class="Normal">, \&OnChar);</font></br></div>
<div id="45" class="line"><div class="number">45</div></br></div>
<div id="46" class="line"><div class="number">46</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">;</font></br></div>
<div id="47" class="line"><div class="number">47</div><font class="Normal">}</font></br></div>
<div id="48" class="line"><div class="number">48</div></br></div>
<div id="49" class="line"><div class="number">49</div><font class="Keyword">sub </font><font class="Function">AppendText</font><font class="Normal"> {</font></br></div>
<div id="50" class="line"><div class="number">50</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="51" class="line"><div class="number">51</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">append</font><font class="Operator">'</font><font class="Normal">, </font><font class="DataType">@_</font><font class="Normal">)) {</font></br></div>
<div id="52" class="line"><div class="number">52</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Append</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="53" class="line"><div class="number">53</div><font class="Normal"> }</font></br></div>
<div id="54" class="line"><div class="number">54</div><font class="Normal">}</font></br></div>
<div id="55" class="line"><div class="number">55</div></br></div>
<div id="56" class="line"><div class="number">56</div><font class="Keyword">sub </font><font class="Function">Broadcast</font><font class="Normal"> {</font></br></div>
<div id="57" class="line"><div class="number">57</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="58" class="line"><div class="number">58</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$plugs</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS};</font></br></div>
<div id="59" class="line"><div class="number">59</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$flag</font><font class="Normal"> = </font><font class="DecVal">0</font><font class="Normal">;</font></br></div>
<div id="60" class="line"><div class="number">60</div><font class="Normal"> </font><font class="Keyword">foreach</font><font class="Normal"> (</font><font class="DataType">@$plugs</font><font class="Normal">) {</font></br></div>
<div id="61" class="line"><div class="number">61</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="Preprocessor">$_</font><font class="Normal">-></font><font class="DataType">Receive</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">)) {</font></br></div>
<div id="62" class="line"><div class="number">62</div><font class="Normal"> </font><font class="DataType">$flag</font><font class="Normal"> = </font><font class="DecVal">1</font><font class="Normal">;</font></br></div>
<div id="63" class="line"><div class="number">63</div><font class="Normal"> }</font></br></div>
<div id="64" class="line"><div class="number">64</div><font class="Normal"> }</font></br></div>
<div id="65" class="line"><div class="number">65</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$flag</font><font class="Normal">;</font></br></div>
<div id="66" class="line"><div class="number">66</div><font class="Normal">}</font></br></div>
<div id="67" class="line"><div class="number">67</div></br></div>
<div id="68" class="line"><div class="number">68</div><font class="Keyword">sub </font><font class="Function">Call2Remove</font><font class="Normal"> {</font></br></div>
<div id="69" class="line"><div class="number">69</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$call</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="70" class="line"><div class="number">70</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$call</font><font class="Normal"> =~ </font><font class="Operator">/</font><font class="Others">.</font><font class="Char">*</font><font class="Others">remove</font><font class="Char">$</font><font class="Operator">/</font><font class="Normal">) {</font></br></div>
<div id="71" class="line"><div class="number">71</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> (</font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal"> + </font><font class="Function">length</font><font class="Normal">(</font><font class="DataType">$txt</font><font class="Normal">))</font></br></div>
<div id="72" class="line"><div class="number">72</div><font class="Normal"> } </font><font class="Keyword">else</font><font class="Normal"> {</font></br></div>
<div id="73" class="line"><div class="number">73</div><font class="Normal"> carp </font><font class="Operator">"</font><font class="SpecialString">Call '</font><font class="DataType">$call</font><font class="Operator">'</font><font class="SpecialString"> is not a remove type</font><font class="Operator">"</font><font class="Normal">;</font></br></div>
<div id="74" class="line"><div class="number">74</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="Function">undef</font></br></div>
<div id="75" class="line"><div class="number">75</div><font class="Normal"> }</font></br></div>
<div id="76" class="line"><div class="number">76</div><font class="Normal">}</font></br></div>
<div id="77" class="line"><div class="number">77</div></br></div>
<div id="78" class="line"><div class="number">78</div><font class="Keyword">sub </font><font class="Function">Call2Replace</font><font class="Normal"> {</font></br></div>
<div id="79" class="line"><div class="number">79</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$call</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$old</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">, </font><font class="DataType">$sel</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="80" class="line"><div class="number">80</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$call</font><font class="Normal"> =~ </font><font class="Operator">/</font><font class="Others">.</font><font class="Char">*</font><font class="Others">replace</font><font class="Char">$</font><font class="Operator">/</font><font class="Normal">) {</font></br></div>
<div id="81" class="line"><div class="number">81</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> (</font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal"> + </font><font class="Function">length</font><font class="Normal">(</font><font class="DataType">$old</font><font class="Normal">), </font><font class="DataType">$txt</font><font class="Normal">)</font></br></div>
<div id="82" class="line"><div class="number">82</div><font class="Normal"> } </font><font class="Keyword">else</font><font class="Normal"> {</font></br></div>
<div id="83" class="line"><div class="number">83</div><font class="Normal"> carp </font><font class="Operator">"</font><font class="SpecialString">Call '</font><font class="DataType">$call</font><font class="Operator">'</font><font class="SpecialString"> is not a replace type</font><font class="Operator">"</font><font class="Normal">;</font></br></div>
<div id="84" class="line"><div class="number">84</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="Function">undef</font></br></div>
<div id="85" class="line"><div class="number">85</div><font class="Normal"> }</font></br></div>
<div id="86" class="line"><div class="number">86</div><font class="Normal">}</font></br></div>
<div id="87" class="line"><div class="number">87</div></br></div>
<div id="88" class="line"><div class="number">88</div><font class="Keyword">sub </font><font class="Function">Call2WriteText</font><font class="Normal"> {</font></br></div>
<div id="89" class="line"><div class="number">89</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$call</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="90" class="line"><div class="number">90</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$call</font><font class="Normal"> =~ </font><font class="Operator">/</font><font class="Others">.</font><font class="Char">*</font><font class="Others">write</font><font class="Char">$</font><font class="Operator">/</font><font class="Normal">) {</font></br></div>
<div id="91" class="line"><div class="number">91</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$txt</font></br></div>
<div id="92" class="line"><div class="number">92</div><font class="Normal"> } </font><font class="Keyword">else</font><font class="Normal"> {</font></br></div>
<div id="93" class="line"><div class="number">93</div><font class="Normal"> carp </font><font class="Operator">"</font><font class="SpecialString">Call '</font><font class="DataType">$call</font><font class="Operator">'</font><font class="SpecialString"> is not a write type</font><font class="Operator">"</font><font class="Normal">;</font></br></div>
<div id="94" class="line"><div class="number">94</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="Function">undef</font></br></div>
<div id="95" class="line"><div class="number">95</div><font class="Normal"> }</font></br></div>
<div id="96" class="line"><div class="number">96</div><font class="Normal">}</font></br></div>
<div id="97" class="line"><div class="number">97</div></br></div>
<div id="98" class="line"><div class="number">98</div><font class="Keyword">sub </font><font class="Function">Callback</font><font class="Normal"> {</font></br></div>
<div id="99" class="line"><div class="number">99</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="100" class="line"><div class="number">100</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">@_</font><font class="Normal">) { </font><font class="DataType">$self</font><font class="Normal">->{CALLBACK} = </font><font class="Function">shift</font><font class="Normal">; }</font></br></div>
<div id="101" class="line"><div class="number">101</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{CALLBACK};</font></br></div>
<div id="102" class="line"><div class="number">102</div><font class="Normal">}</font></br></div>
<div id="103" class="line"><div class="number">103</div></br></div>
<div id="104" class="line"><div class="number">104</div><font class="Keyword">sub </font><font class="Function">CanUndo</font><font class="Normal"> {</font></br></div>
<div id="105" class="line"><div class="number">105</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="106" class="line"><div class="number">106</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">canundo</font><font class="Operator">'</font><font class="Normal">);</font></br></div>
<div id="107" class="line"><div class="number">107</div><font class="Normal">}</font></br></div>
<div id="108" class="line"><div class="number">108</div></br></div>
<div id="109" class="line"><div class="number">109</div><font class="Keyword">sub </font><font class="Function">CanRedo</font><font class="Normal"> {</font></br></div>
<div id="110" class="line"><div class="number">110</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="111" class="line"><div class="number">111</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">canredo</font><font class="Operator">'</font><font class="Normal">);</font></br></div>
<div id="112" class="line"><div class="number">112</div><font class="Normal">}</font></br></div>
<div id="113" class="line"><div class="number">113</div></br></div>
<div id="114" class="line"><div class="number">114</div><font class="Keyword">sub </font><font class="Function">Clear</font><font class="Normal"> {</font></br></div>
<div id="115" class="line"><div class="number">115</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="116" class="line"><div class="number">116</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">clear</font><font class="Operator">'</font><font class="Normal">)) {</font></br></div>
<div id="117" class="line"><div class="number">117</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Clear</font><font class="Normal">;</font></br></div>
<div id="118" class="line"><div class="number">118</div><font class="Normal"> }</font></br></div>
<div id="119" class="line"><div class="number">119</div><font class="Normal">}</font></br></div>
<div id="120" class="line"><div class="number">120</div></br></div>
<div id="121" class="line"><div class="number">121</div><font class="Keyword">sub </font><font class="Function">ClearSelection</font><font class="Normal"> {</font></br></div>
<div id="122" class="line"><div class="number">122</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="123" class="line"><div class="number">123</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$ins</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">GetInsertionPoint</font><font class="Normal">;</font></br></div>
<div id="124" class="line"><div class="number">124</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SetSelection</font><font class="Normal">(</font><font class="DataType">$ins</font><font class="Normal">, </font><font class="DataType">$ins</font><font class="Normal">);</font></br></div>
<div id="125" class="line"><div class="number">125</div><font class="Normal">}</font></br></div>
<div id="126" class="line"><div class="number">126</div></br></div>
<div id="127" class="line"><div class="number">127</div><font class="Keyword">sub </font><font class="Function">Command</font><font class="Normal"> {</font></br></div>
<div id="128" class="line"><div class="number">128</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="129" class="line"><div class="number">129</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$name</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="130" class="line"><div class="number">130</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">@_</font><font class="Normal">) { </font><font class="DataType">$self</font><font class="Normal">->{COMMANDS}->{</font><font class="DataType">$name</font><font class="Normal">} = </font><font class="Function">shift</font><font class="Normal"> }</font></br></div>
<div id="131" class="line"><div class="number">131</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{COMMANDS}->{</font><font class="DataType">$name</font><font class="Normal">}</font></br></div>
<div id="132" class="line"><div class="number">132</div><font class="Normal">}</font></br></div>
<div id="133" class="line"><div class="number">133</div></br></div>
<div id="134" class="line"><div class="number">134</div><font class="Keyword">sub </font><font class="Function">Copy</font><font class="Normal"> {</font></br></div>
<div id="135" class="line"><div class="number">135</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="136" class="line"><div class="number">136</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">copy</font><font class="Operator">'</font><font class="Normal">)) {</font></br></div>
<div id="137" class="line"><div class="number">137</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Copy</font><font class="Normal">;</font></br></div>
<div id="138" class="line"><div class="number">138</div><font class="Normal"> }</font></br></div>
<div id="139" class="line"><div class="number">139</div><font class="Normal">}</font></br></div>
<div id="140" class="line"><div class="number">140</div></br></div>
<div id="141" class="line"><div class="number">141</div><font class="Keyword">sub </font><font class="Function">Cut</font><font class="Normal"> {</font></br></div>
<div id="142" class="line"><div class="number">142</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="143" class="line"><div class="number">143</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">cut</font><font class="Operator">'</font><font class="Normal">)) {</font></br></div>
<div id="144" class="line"><div class="number">144</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Cut</font><font class="Normal">;</font></br></div>
<div id="145" class="line"><div class="number">145</div><font class="Normal"> }</font></br></div>
<div id="146" class="line"><div class="number">146</div><font class="Normal">}</font></br></div>
<div id="147" class="line"><div class="number">147</div></br></div>
<div id="148" class="line"><div class="number">148</div><font class="Keyword">sub </font><font class="Function">DoRemove</font><font class="Normal"> {</font></br></div>
<div id="149" class="line"><div class="number">149</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="150" class="line"><div class="number">150</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">, </font><font class="DataType">$sel</font><font class="Normal">, </font><font class="DataType">$ins</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="151" class="line"><div class="number">151</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">ClearSelection</font><font class="Normal">;</font></br></div>
<div id="152" class="line"><div class="number">152</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Remove</font><font class="Normal">(</font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal"> + </font><font class="Function">length</font><font class="Normal">(</font><font class="DataType">$txt</font><font class="Normal">));</font></br></div>
<div id="153" class="line"><div class="number">153</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="Function">defined</font><font class="Normal">(</font><font class="DataType">$ins</font><font class="Normal">)) {</font></br></div>
<div id="154" class="line"><div class="number">154</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SetInsertionPoint</font><font class="Normal">(</font><font class="DataType">$ins</font><font class="Normal">);</font></br></div>
<div id="155" class="line"><div class="number">155</div><font class="Normal"> }</font></br></div>
<div id="156" class="line"><div class="number">156</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DecVal">1</font></br></div>
<div id="157" class="line"><div class="number">157</div><font class="Normal">}</font></br></div>
<div id="158" class="line"><div class="number">158</div></br></div>
<div id="159" class="line"><div class="number">159</div><font class="Keyword">sub </font><font class="Function">DoReplace</font><font class="Normal"> {</font></br></div>
<div id="160" class="line"><div class="number">160</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$old</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">, </font><font class="DataType">$sel</font><font class="Normal">, </font><font class="DataType">$ins</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="161" class="line"><div class="number">161</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">ClearSelection</font><font class="Normal">;</font></br></div>
<div id="162" class="line"><div class="number">162</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Replace</font><font class="Normal">(</font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal"> + </font><font class="Function">length</font><font class="Normal">(</font><font class="DataType">$old</font><font class="Normal">), </font><font class="DataType">$txt</font><font class="Normal">);</font></br></div>
<div id="163" class="line"><div class="number">163</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$sel</font><font class="Normal">) {</font></br></div>
<div id="164" class="line"><div class="number">164</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SetSelection</font><font class="Normal">(</font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal"> + </font><font class="Function">length</font><font class="Normal">(</font><font class="DataType">$txt</font><font class="Normal">));</font></br></div>
<div id="165" class="line"><div class="number">165</div><font class="Normal"> }</font></br></div>
<div id="166" class="line"><div class="number">166</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="Function">defined</font><font class="Normal">(</font><font class="DataType">$ins</font><font class="Normal">)) {</font></br></div>
<div id="167" class="line"><div class="number">167</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SetInsertionPoint</font><font class="Normal">(</font><font class="DataType">$ins</font><font class="Normal">);</font></br></div>
<div id="168" class="line"><div class="number">168</div><font class="Normal"> }</font></br></div>
<div id="169" class="line"><div class="number">169</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DecVal">1</font></br></div>
<div id="170" class="line"><div class="number">170</div><font class="Normal">}</font></br></div>
<div id="171" class="line"><div class="number">171</div></br></div>
<div id="172" class="line"><div class="number">172</div><font class="Keyword">sub </font><font class="Function">DoWrite</font><font class="Normal"> {</font></br></div>
<div id="173" class="line"><div class="number">173</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">, </font><font class="DataType">$sel</font><font class="Normal">, </font><font class="DataType">$ins</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="174" class="line"><div class="number">174</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">ClearSelection</font><font class="Normal">;</font></br></div>
<div id="175" class="line"><div class="number">175</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SetInsertionPoint</font><font class="Normal">(</font><font class="DataType">$index</font><font class="Normal">);</font></br></div>
<div id="176" class="line"><div class="number">176</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">WriteText</font><font class="Normal">(</font><font class="DataType">$txt</font><font class="Normal">);</font></br></div>
<div id="177" class="line"><div class="number">177</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$sel</font><font class="Normal">) {</font></br></div>
<div id="178" class="line"><div class="number">178</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SetSelection</font><font class="Normal">(</font><font class="DataType">$index</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal"> + </font><font class="Function">length</font><font class="Normal">(</font><font class="DataType">$txt</font><font class="Normal">));</font></br></div>
<div id="179" class="line"><div class="number">179</div><font class="Normal"> }</font></br></div>
<div id="180" class="line"><div class="number">180</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="Function">defined</font><font class="Normal">(</font><font class="DataType">$ins</font><font class="Normal">)) {</font></br></div>
<div id="181" class="line"><div class="number">181</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SetInsertionPoint</font><font class="Normal">(</font><font class="DataType">$ins</font><font class="Normal">);</font></br></div>
<div id="182" class="line"><div class="number">182</div><font class="Normal"> }</font></br></div>
<div id="183" class="line"><div class="number">183</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DecVal">1</font></br></div>
<div id="184" class="line"><div class="number">184</div><font class="Normal">}</font></br></div>
<div id="185" class="line"><div class="number">185</div></br></div>
<div id="186" class="line"><div class="number">186</div><font class="Keyword">sub </font><font class="Function">FindPluginId</font><font class="Normal"> {</font></br></div>
<div id="187" class="line"><div class="number">187</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$name</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="188" class="line"><div class="number">188</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$plgs</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS};</font></br></div>
<div id="189" class="line"><div class="number">189</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$index</font><font class="Normal"> = </font><font class="DecVal">0</font><font class="Normal">;</font></br></div>
<div id="190" class="line"><div class="number">190</div><font class="Normal"> </font><font class="Keyword">foreach</font><font class="Normal"> (</font><font class="DataType">@$plgs</font><font class="Normal">) {</font></br></div>
<div id="191" class="line"><div class="number">191</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$name</font><font class="Normal"> </font><font class="Operator">eq</font><font class="Normal"> </font><font class="DataType">$plgs</font><font class="Normal">->[</font><font class="DataType">$index</font><font class="Normal">]->Name) {</font></br></div>
<div id="192" class="line"><div class="number">192</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$index</font></br></div>
<div id="193" class="line"><div class="number">193</div><font class="Normal"> }</font></br></div>
<div id="194" class="line"><div class="number">194</div><font class="Normal"> </font><font class="DataType">$index</font><font class="Normal"> ++;</font></br></div>
<div id="195" class="line"><div class="number">195</div><font class="Normal"> }</font></br></div>
<div id="196" class="line"><div class="number">196</div><font class="Comment"># carp "Plugin $name is not loaded\n";</font></br></div>
<div id="197" class="line"><div class="number">197</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="Function">undef</font><font class="Normal">;</font></br></div>
<div id="198" class="line"><div class="number">198</div><font class="Normal">}</font></br></div>
<div id="199" class="line"><div class="number">199</div></br></div>
<div id="200" class="line"><div class="number">200</div><font class="Keyword">sub </font><font class="Function">FindPlugin</font><font class="Normal"> {</font></br></div>
<div id="201" class="line"><div class="number">201</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$name</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="202" class="line"><div class="number">202</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$plgs</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS};</font></br></div>
<div id="203" class="line"><div class="number">203</div><font class="Normal"> </font><font class="Keyword">foreach</font><font class="Normal"> (</font><font class="DataType">@$plgs</font><font class="Normal">) {</font></br></div>
<div id="204" class="line"><div class="number">204</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$name</font><font class="Normal"> </font><font class="Operator">eq</font><font class="Normal"> </font><font class="Preprocessor">$_</font><font class="Normal">-></font><font class="DataType">Name</font><font class="Normal">) {</font></br></div>
<div id="205" class="line"><div class="number">205</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="Preprocessor">$_</font></br></div>
<div id="206" class="line"><div class="number">206</div><font class="Normal"> }</font></br></div>
<div id="207" class="line"><div class="number">207</div><font class="Normal"> }</font></br></div>
<div id="208" class="line"><div class="number">208</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="Function">undef</font><font class="Normal">;</font></br></div>
<div id="209" class="line"><div class="number">209</div><font class="Normal">}</font></br></div>
<div id="210" class="line"><div class="number">210</div></br></div>
<div id="211" class="line"><div class="number">211</div><font class="Keyword">sub </font><font class="Function">GetClipboardText</font><font class="Normal"> {</font></br></div>
<div id="212" class="line"><div class="number">212</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="213" class="line"><div class="number">213</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$txt</font><font class="Normal"> = </font><font class="Function">undef</font><font class="Normal">;</font></br></div>
<div id="214" class="line"><div class="number">214</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (wxTheClipboard->Open) {</font></br></div>
<div id="215" class="line"><div class="number">215</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$debug</font><font class="Normal">) { </font><font class="Function">print</font><font class="Normal"> </font><font class="Operator">"</font><font class="SpecialString">Clipboard open</font><font class="Char">\n</font><font class="Operator">"</font><font class="Normal"> }</font></br></div>
<div id="216" class="line"><div class="number">216</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$textdata</font><font class="Normal"> = </font><font class="Function">Wx::TextDataObject</font><font class="Normal">->new;</font></br></div>
<div id="217" class="line"><div class="number">217</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$ok</font><font class="Normal"> = wxTheClipboard->GetData( </font><font class="DataType">$textdata</font><font class="Normal"> );</font></br></div>
<div id="218" class="line"><div class="number">218</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal">( </font><font class="DataType">$ok</font><font class="Normal"> ) {</font></br></div>
<div id="219" class="line"><div class="number">219</div><font class="Normal"> </font><font class="DataType">$txt</font><font class="Normal"> = </font><font class="DataType">$textdata</font><font class="Normal">-></font><font class="DataType">GetText</font><font class="Normal">;</font></br></div>
<div id="220" class="line"><div class="number">220</div><font class="Normal"> }</font></br></div>
<div id="221" class="line"><div class="number">221</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$debug</font><font class="Normal"> </font><font class="Operator">and</font><font class="Normal"> </font><font class="Function">defined</font><font class="Normal">(</font><font class="DataType">$txt</font><font class="Normal">)) { </font><font class="Function">print</font><font class="Normal"> </font><font class="Operator">"</font><font class="SpecialString">Clipboard text: </font><font class="DataType">$txt</font><font class="Char">\n</font><font class="Operator">"</font><font class="Normal"> }</font></br></div>
<div id="222" class="line"><div class="number">222</div><font class="Normal"> wxTheClipboard->Close;</font></br></div>
<div id="223" class="line"><div class="number">223</div><font class="Normal"> }</font></br></div>
<div id="224" class="line"><div class="number">224</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$txt</font><font class="Normal">;</font></br></div>
<div id="225" class="line"><div class="number">225</div><font class="Normal">}</font></br></div>
<div id="226" class="line"><div class="number">226</div></br></div>
<div id="227" class="line"><div class="number">227</div><font class="Keyword">sub </font><font class="Function">GetLineNumber</font><font class="Normal"> {</font></br></div>
<div id="228" class="line"><div class="number">228</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$index</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="229" class="line"><div class="number">229</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="Function">defined</font><font class="Normal">(</font><font class="DataType">$index</font><font class="Normal">)) { </font><font class="DataType">$index</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">GetInsertionPoint</font><font class="Normal"> };</font></br></div>
<div id="230" class="line"><div class="number">230</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$col</font><font class="Normal">, </font><font class="DataType">$line</font><font class="Normal">) = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">PositionToXY</font><font class="Normal">(</font><font class="DataType">$index</font><font class="Normal">);</font></br></div>
<div id="231" class="line"><div class="number">231</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$line</font><font class="Normal">;</font></br></div>
<div id="232" class="line"><div class="number">232</div><font class="Normal">}</font></br></div>
<div id="233" class="line"><div class="number">233</div></br></div>
<div id="234" class="line"><div class="number">234</div><font class="Keyword">sub </font><font class="Function">HasSelection</font><font class="Normal"> {</font></br></div>
<div id="235" class="line"><div class="number">235</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="236" class="line"><div class="number">236</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$selb</font><font class="Normal">, </font><font class="DataType">$sele</font><font class="Normal">) = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">GetSelection</font><font class="Normal">;</font></br></div>
<div id="237" class="line"><div class="number">237</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> (</font><font class="DataType">$selb</font><font class="Normal"> </font><font class="Operator">ne</font><font class="Normal"> </font><font class="DataType">$sele</font><font class="Normal">)</font></br></div>
<div id="238" class="line"><div class="number">238</div><font class="Normal">}</font></br></div>
<div id="239" class="line"><div class="number">239</div></br></div>
<div id="240" class="line"><div class="number">240</div><font class="Comment"># </font><font class="Alert">TODO</font><font class="Comment"> make this unicode compatible</font></br></div>
<div id="241" class="line"><div class="number">241</div><font class="Keyword">sub </font><font class="Function">IsWriteable</font><font class="Normal"> {</font></br></div>
<div id="242" class="line"><div class="number">242</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$key</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="243" class="line"><div class="number">243</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (((</font><font class="DataType">$key</font><font class="Normal"> >= </font><font class="DecVal">32</font><font class="Normal">) </font><font class="Operator">and</font><font class="Normal"> (</font><font class="DataType">$key</font><font class="Normal"> < </font><font class="DecVal">127</font><font class="Normal">)) </font><font class="Operator">or</font><font class="Normal"> ((</font><font class="DataType">$key</font><font class="Normal"> > </font><font class="DecVal">127</font><font class="Normal">) </font><font class="Operator">and</font><font class="Normal"> (</font><font class="DataType">$key</font><font class="Normal"> < </font><font class="DecVal">256</font><font class="Normal">))) {</font></br></div>
<div id="244" class="line"><div class="number">244</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DecVal">1</font></br></div>
<div id="245" class="line"><div class="number">245</div><font class="Normal"> }</font></br></div>
<div id="246" class="line"><div class="number">246</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DecVal">0</font></br></div>
<div id="247" class="line"><div class="number">247</div><font class="Normal">}</font></br></div>
<div id="248" class="line"><div class="number">248</div></br></div>
<div id="249" class="line"><div class="number">249</div><font class="Keyword">sub </font><font class="Function">Listening</font><font class="Normal"> {</font></br></div>
<div id="250" class="line"><div class="number">250</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="251" class="line"><div class="number">251</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">@_</font><font class="Normal">) {</font></br></div>
<div id="252" class="line"><div class="number">252</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$new</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="253" class="line"><div class="number">253</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$new</font><font class="Normal"> </font><font class="Operator">eq</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{LISTENING}) {</font></br></div>
<div id="254" class="line"><div class="number">254</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$plgs</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS};</font></br></div>
<div id="255" class="line"><div class="number">255</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$new</font><font class="Normal">) {</font></br></div>
<div id="256" class="line"><div class="number">256</div><font class="Normal"> </font><font class="Function">unshift</font><font class="Normal"> </font><font class="DataType">@$plgs</font><font class="Normal">, </font><font class="DataType">$self</font></br></div>
<div id="257" class="line"><div class="number">257</div><font class="Normal"> } </font><font class="Keyword">else</font><font class="Normal"> {</font></br></div>
<div id="258" class="line"><div class="number">258</div><font class="Normal"> </font><font class="Function">shift</font><font class="Normal"> </font><font class="DataType">@$plgs</font></br></div>
<div id="259" class="line"><div class="number">259</div><font class="Normal"> }</font></br></div>
<div id="260" class="line"><div class="number">260</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{LISTENING} = </font><font class="DataType">$new</font></br></div>
<div id="261" class="line"><div class="number">261</div><font class="Normal"> }</font></br></div>
<div id="262" class="line"><div class="number">262</div><font class="Normal"> }</font></br></div>
<div id="263" class="line"><div class="number">263</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{LISTENING}</font></br></div>
<div id="264" class="line"><div class="number">264</div><font class="Normal">}</font></br></div>
<div id="265" class="line"><div class="number">265</div></br></div>
<div id="266" class="line"><div class="number">266</div><font class="Keyword">sub </font><font class="Function">LoadFile</font><font class="Normal"> {</font></br></div>
<div id="267" class="line"><div class="number">267</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="268" class="line"><div class="number">268</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">load</font><font class="Operator">'</font><font class="Normal">, </font><font class="DataType">@_</font><font class="Normal">)) {</font></br></div>
<div id="269" class="line"><div class="number">269</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">LoadFile</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="270" class="line"><div class="number">270</div><font class="Normal"> }</font></br></div>
<div id="271" class="line"><div class="number">271</div><font class="Normal">}</font></br></div>
<div id="272" class="line"><div class="number">272</div></br></div>
<div id="273" class="line"><div class="number">273</div><font class="Keyword">sub </font><font class="Function">LoadPlugin</font><font class="Normal"> {</font></br></div>
<div id="274" class="line"><div class="number">274</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="275" class="line"><div class="number">275</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$plug</font><font class="Normal"> = </font><font class="Function">undef</font><font class="Normal">;</font></br></div>
<div id="276" class="line"><div class="number">276</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$name</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="277" class="line"><div class="number">277</div><font class="Normal"> </font><font class="Comment">#Does anybody have a better idea for this?</font></br></div>
<div id="278" class="line"><div class="number">278</div><font class="Normal"> </font><font class="DataType">$name</font><font class="Normal"> = </font><font class="Operator">"</font><font class="SpecialString">Syntax::Kamelon::Wx::PluggableTextCtrl::</font><font class="DataType">$name</font><font class="Operator">"</font><font class="Normal">;</font></br></div>
<div id="279" class="line"><div class="number">279</div><font class="Normal"> </font><font class="DataType">$plug</font><font class="Normal"> = </font><font class="DataType">$name</font><font class="Normal">-></font><font class="DataType">new</font><font class="Normal">(</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="280" class="line"><div class="number">280</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="Function">defined</font><font class="Normal">(</font><font class="DataType">$plug</font><font class="Normal">)) {</font></br></div>
<div id="281" class="line"><div class="number">281</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">RegisterPlugin</font><font class="Normal">(</font><font class="DataType">$plug</font><font class="Normal">);</font></br></div>
<div id="282" class="line"><div class="number">282</div><font class="Normal"> } </font><font class="Keyword">else</font><font class="Normal"> {</font></br></div>
<div id="283" class="line"><div class="number">283</div><font class="Normal"> carp </font><font class="Operator">"</font><font class="SpecialString">unable to load plugin </font><font class="DataType">$name</font><font class="Char">\n</font><font class="Operator">"</font><font class="Normal">;</font></br></div>
<div id="284" class="line"><div class="number">284</div><font class="Normal"> }</font></br></div>
<div id="285" class="line"><div class="number">285</div><font class="Normal">}</font></br></div>
<div id="286" class="line"><div class="number">286</div></br></div>
<div id="287" class="line"><div class="number">287</div><font class="Keyword">sub </font><font class="Function">Name</font><font class="Normal"> {</font></br></div>
<div id="288" class="line"><div class="number">288</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="289" class="line"><div class="number">289</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$name</font><font class="Normal"> = </font><font class="Function">ref</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">;</font></br></div>
<div id="290" class="line"><div class="number">290</div><font class="Normal"> </font><font class="DataType">$name</font><font class="Normal"> =~</font><font class="Operator">s/</font><font class="Others">.</font><font class="Char">*</font><font class="Others">::</font><font class="Operator">//</font><font class="Normal">;</font></br></div>
<div id="291" class="line"><div class="number">291</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$debug</font><font class="Normal">) { </font><font class="Function">print</font><font class="Normal"> </font><font class="Operator">"</font><font class="SpecialString">plugin name is </font><font class="DataType">$name</font><font class="Char">\n</font><font class="Operator">"</font><font class="Normal"> }</font></br></div>
<div id="292" class="line"><div class="number">292</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$name</font></br></div>
<div id="293" class="line"><div class="number">293</div><font class="Normal">}</font></br></div>
<div id="294" class="line"><div class="number">294</div></br></div>
<div id="295" class="line"><div class="number">295</div><font class="Keyword">sub </font><font class="Function">OnChar</font><font class="Normal"> {</font></br></div>
<div id="296" class="line"><div class="number">296</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$event</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="297" class="line"><div class="number">297</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$k</font><font class="Normal"> = </font><font class="DataType">$event</font><font class="Normal">-></font><font class="DataType">GetKeyCode</font><font class="Normal">;</font></br></div>
<div id="298" class="line"><div class="number">298</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$k</font><font class="Normal"> </font><font class="Operator">eq</font><font class="Normal"> </font><font class="DecVal">322</font><font class="Normal">) { </font><font class="Comment">#Insert key pressed, record flip insert/ovr mode.</font></br></div>
<div id="299" class="line"><div class="number">299</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">OvrMode</font><font class="Normal">) {</font></br></div>
<div id="300" class="line"><div class="number">300</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">OvrMode</font><font class="Normal">(</font><font class="DecVal">0</font><font class="Normal">)</font></br></div>
<div id="301" class="line"><div class="number">301</div><font class="Normal"> } </font><font class="Keyword">else</font><font class="Normal"> {</font></br></div>
<div id="302" class="line"><div class="number">302</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">OvrMode</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">)</font></br></div>
<div id="303" class="line"><div class="number">303</div><font class="Normal"> }</font></br></div>
<div id="304" class="line"><div class="number">304</div><font class="Normal"> }</font></br></div>
<div id="305" class="line"><div class="number">305</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">key</font><font class="Operator">'</font><font class="Normal">, </font><font class="DataType">$event</font><font class="Normal">)) {</font></br></div>
<div id="306" class="line"><div class="number">306</div><font class="Normal"> </font><font class="DataType">$event</font><font class="Normal">-></font><font class="DataType">Skip</font><font class="Normal">;</font></br></div>
<div id="307" class="line"><div class="number">307</div><font class="Normal"> }</font></br></div>
<div id="308" class="line"><div class="number">308</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$callback</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Callback</font><font class="Normal">;</font></br></div>
<div id="309" class="line"><div class="number">309</div><font class="Normal"> &</font><font class="DataType">$callback</font><font class="Normal">;</font></br></div>
<div id="310" class="line"><div class="number">310</div><font class="Normal">}</font></br></div>
<div id="311" class="line"><div class="number">311</div></br></div>
<div id="312" class="line"><div class="number">312</div><font class="Keyword">sub </font><font class="Function">OvrMode</font><font class="Normal"> {</font></br></div>
<div id="313" class="line"><div class="number">313</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="314" class="line"><div class="number">314</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">@_</font><font class="Normal">) { </font><font class="DataType">$self</font><font class="Normal">->{OVRMODE} = </font><font class="Function">shift</font><font class="Normal">; }</font></br></div>
<div id="315" class="line"><div class="number">315</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{OVRMODE};</font></br></div>
<div id="316" class="line"><div class="number">316</div><font class="Normal">}</font></br></div>
<div id="317" class="line"><div class="number">317</div></br></div>
<div id="318" class="line"><div class="number">318</div><font class="Keyword">sub </font><font class="Function">Paste</font><font class="Normal"> {</font></br></div>
<div id="319" class="line"><div class="number">319</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="320" class="line"><div class="number">320</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">paste</font><font class="Operator">'</font><font class="Normal">)) {</font></br></div>
<div id="321" class="line"><div class="number">321</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Paste</font><font class="Normal">;</font></br></div>
<div id="322" class="line"><div class="number">322</div><font class="Normal"> }</font></br></div>
<div id="323" class="line"><div class="number">323</div><font class="Normal">}</font></br></div>
<div id="324" class="line"><div class="number">324</div></br></div>
<div id="325" class="line"><div class="number">325</div><font class="Keyword">sub </font><font class="Function">Plugin</font><font class="Normal"> {</font></br></div>
<div id="326" class="line"><div class="number">326</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="327" class="line"><div class="number">327</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$id</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="328" class="line"><div class="number">328</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$plgs</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS};</font></br></div>
<div id="329" class="line"><div class="number">329</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$id</font><font class="Normal"> =~ </font><font class="Operator">/</font><font class="Char">^</font><font class="BaseN">\d</font><font class="Char">+$</font><font class="Operator">/</font><font class="Normal">) {</font></br></div>
<div id="330" class="line"><div class="number">330</div><font class="Normal"> </font><font class="DataType">$id</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">FindPluginId</font><font class="Normal">(</font><font class="DataType">$id</font><font class="Normal">);</font></br></div>
<div id="331" class="line"><div class="number">331</div><font class="Normal"> }</font></br></div>
<div id="332" class="line"><div class="number">332</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">@_</font><font class="Normal">) { </font></br></div>
<div id="333" class="line"><div class="number">333</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS}->[</font><font class="DataType">$id</font><font class="Normal">] = </font><font class="Function">shift</font><font class="Normal">; </font></br></div>
<div id="334" class="line"><div class="number">334</div><font class="Normal"> }</font></br></div>
<div id="335" class="line"><div class="number">335</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS}->[</font><font class="DataType">$id</font><font class="Normal">];</font></br></div>
<div id="336" class="line"><div class="number">336</div><font class="Normal">}</font></br></div>
<div id="337" class="line"><div class="number">337</div></br></div>
<div id="338" class="line"><div class="number">338</div><font class="Keyword">sub </font><font class="Function">Receive</font><font class="Normal"> {</font></br></div>
<div id="339" class="line"><div class="number">339</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="340" class="line"><div class="number">340</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$name</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="341" class="line"><div class="number">341</div><font class="Comment"># if ($debug) { print "received $name\n"; print Dumper $self->{COMMANDS} }</font></br></div>
<div id="342" class="line"><div class="number">342</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="Function">exists</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">->{COMMANDS}->{</font><font class="DataType">$name</font><font class="Normal">}) {</font></br></div>
<div id="343" class="line"><div class="number">343</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> (</font><font class="DataType">$debug</font><font class="Normal">) { </font><font class="Function">print</font><font class="Normal"> </font><font class="Operator">"</font><font class="SpecialString">executing </font><font class="DataType">$name</font><font class="Char">\n</font><font class="Operator">"</font><font class="Normal"> }</font></br></div>
<div id="344" class="line"><div class="number">344</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$cmd</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Command</font><font class="Normal">(</font><font class="DataType">$name</font><font class="Normal">);</font></br></div>
<div id="345" class="line"><div class="number">345</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> &</font><font class="DataType">$cmd</font><font class="Normal">(</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="346" class="line"><div class="number">346</div><font class="Normal"> }</font></br></div>
<div id="347" class="line"><div class="number">347</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DecVal">0</font></br></div>
<div id="348" class="line"><div class="number">348</div><font class="Normal">}</font></br></div>
<div id="349" class="line"><div class="number">349</div></br></div>
<div id="350" class="line"><div class="number">350</div><font class="Keyword">sub </font><font class="Function">Redo</font><font class="Normal"> {</font></br></div>
<div id="351" class="line"><div class="number">351</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="352" class="line"><div class="number">352</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">redo</font><font class="Operator">'</font><font class="Normal">)) {</font></br></div>
<div id="353" class="line"><div class="number">353</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Redo</font><font class="Normal">;</font></br></div>
<div id="354" class="line"><div class="number">354</div><font class="Normal"> }</font></br></div>
<div id="355" class="line"><div class="number">355</div><font class="Normal">}</font></br></div>
<div id="356" class="line"><div class="number">356</div></br></div>
<div id="357" class="line"><div class="number">357</div><font class="Keyword">sub </font><font class="Function">RegisterPlugin</font><font class="Normal"> {</font></br></div>
<div id="358" class="line"><div class="number">358</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$plug</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="359" class="line"><div class="number">359</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$pl</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">->{PLUGINS};</font></br></div>
<div id="360" class="line"><div class="number">360</div><font class="Normal"> </font><font class="Function">push</font><font class="Normal"> </font><font class="DataType">@$pl</font><font class="Normal">, </font><font class="DataType">$plug</font><font class="Normal">;</font></br></div>
<div id="361" class="line"><div class="number">361</div><font class="Normal">}</font></br></div>
<div id="362" class="line"><div class="number">362</div></br></div>
<div id="363" class="line"><div class="number">363</div><font class="Keyword">sub </font><font class="Function">Remove</font><font class="Normal"> {</font></br></div>
<div id="364" class="line"><div class="number">364</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="365" class="line"><div class="number">365</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">@call</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Remove2Call</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="366" class="line"><div class="number">366</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="DataType">@call</font><font class="Normal">)) {</font></br></div>
<div id="367" class="line"><div class="number">367</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Remove</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="368" class="line"><div class="number">368</div><font class="Normal"> }</font></br></div>
<div id="369" class="line"><div class="number">369</div><font class="Normal">}</font></br></div>
<div id="370" class="line"><div class="number">370</div></br></div>
<div id="371" class="line"><div class="number">371</div><font class="Keyword">sub </font><font class="Function">Remove2Call</font><font class="Normal"> {</font></br></div>
<div id="372" class="line"><div class="number">372</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$begin</font><font class="Normal">, </font><font class="DataType">$end</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="373" class="line"><div class="number">373</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$sel</font><font class="Normal"> = </font><font class="DecVal">0</font><font class="Normal">;</font></br></div>
<div id="374" class="line"><div class="number">374</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$selb</font><font class="Normal">, </font><font class="DataType">$sele</font><font class="Normal">) = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">GetSelection</font><font class="Normal">;</font></br></div>
<div id="375" class="line"><div class="number">375</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> ((</font><font class="DataType">$selb</font><font class="Normal"> </font><font class="Operator">eq</font><font class="Normal"> </font><font class="DataType">$begin</font><font class="Normal">) </font><font class="Operator">and</font><font class="Normal"> (</font><font class="DataType">$sele</font><font class="Normal"> </font><font class="Operator">eq</font><font class="Normal"> </font><font class="DataType">$end</font><font class="Normal">)) { </font><font class="DataType">$sel</font><font class="Normal"> = </font><font class="DecVal">1</font><font class="Normal"> }</font></br></div>
<div id="376" class="line"><div class="number">376</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> (</font><font class="Operator">'</font><font class="String">remove</font><font class="Operator">'</font><font class="Normal">, </font><font class="DataType">$begin</font><font class="Normal">, </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">GetRange</font><font class="Normal">(</font><font class="DataType">$begin</font><font class="Normal">, </font><font class="DataType">$end</font><font class="Normal">), </font><font class="DataType">$sel</font><font class="Normal">)</font></br></div>
<div id="377" class="line"><div class="number">377</div><font class="Normal">}</font></br></div>
<div id="378" class="line"><div class="number">378</div></br></div>
<div id="379" class="line"><div class="number">379</div><font class="Keyword">sub </font><font class="Function">Replace</font><font class="Normal"> {</font></br></div>
<div id="380" class="line"><div class="number">380</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="381" class="line"><div class="number">381</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">@call</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Replace2Call</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="382" class="line"><div class="number">382</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="DataType">@call</font><font class="Normal">)) {</font></br></div>
<div id="383" class="line"><div class="number">383</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Replace</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="384" class="line"><div class="number">384</div><font class="Normal"> }</font></br></div>
<div id="385" class="line"><div class="number">385</div><font class="Normal">}</font></br></div>
<div id="386" class="line"><div class="number">386</div></br></div>
<div id="387" class="line"><div class="number">387</div><font class="Keyword">sub </font><font class="Function">Replace2Call</font><font class="Normal"> {</font></br></div>
<div id="388" class="line"><div class="number">388</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$begin</font><font class="Normal">, </font><font class="DataType">$end</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="389" class="line"><div class="number">389</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$sel</font><font class="Normal"> = </font><font class="DecVal">0</font><font class="Normal">;</font></br></div>
<div id="390" class="line"><div class="number">390</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$selb</font><font class="Normal">, </font><font class="DataType">$sele</font><font class="Normal">) = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">GetSelection</font><font class="Normal">;</font></br></div>
<div id="391" class="line"><div class="number">391</div><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> ((</font><font class="DataType">$selb</font><font class="Normal"> </font><font class="Operator">eq</font><font class="Normal"> </font><font class="DataType">$begin</font><font class="Normal">) </font><font class="Operator">and</font><font class="Normal"> (</font><font class="DataType">$sele</font><font class="Normal"> </font><font class="Operator">eq</font><font class="Normal"> </font><font class="DataType">$end</font><font class="Normal">)) { </font><font class="DataType">$sel</font><font class="Normal"> = </font><font class="DecVal">1</font><font class="Normal"> }</font></br></div>
<div id="392" class="line"><div class="number">392</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> (</font><font class="Operator">'</font><font class="String">replace</font><font class="Operator">'</font><font class="Normal">, </font><font class="DataType">$begin</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">, </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">GetRange</font><font class="Normal">(</font><font class="DataType">$begin</font><font class="Normal">, </font><font class="DataType">$end</font><font class="Normal">), </font><font class="DataType">$sel</font><font class="Normal">)</font></br></div>
<div id="393" class="line"><div class="number">393</div><font class="Normal">}</font></br></div>
<div id="394" class="line"><div class="number">394</div></br></div>
<div id="395" class="line"><div class="number">395</div><font class="Keyword">sub </font><font class="Function">SaveFile</font><font class="Normal"> {</font></br></div>
<div id="396" class="line"><div class="number">396</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="397" class="line"><div class="number">397</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">save</font><font class="Operator">'</font><font class="Normal">, </font><font class="DataType">@_</font><font class="Normal">)) {</font></br></div>
<div id="398" class="line"><div class="number">398</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">SaveFile</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="399" class="line"><div class="number">399</div><font class="Normal"> }</font></br></div>
<div id="400" class="line"><div class="number">400</div><font class="Normal">}</font></br></div>
<div id="401" class="line"><div class="number">401</div></br></div>
<div id="402" class="line"><div class="number">402</div><font class="Keyword">sub </font><font class="Function">NativePlugins</font><font class="Normal"> {</font></br></div>
<div id="403" class="line"><div class="number">403</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="404" class="line"><div class="number">404</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="Operator">qw[</font><font class="Normal"> Highlighter KeyEchoes UndoRedo </font><font class="Operator">]</font></br></div>
<div id="405" class="line"><div class="number">405</div><font class="Normal">}</font></br></div>
<div id="406" class="line"><div class="number">406</div></br></div>
<div id="407" class="line"><div class="number">407</div><font class="Keyword">sub </font><font class="Function">Syntax</font><font class="Normal"> {</font></br></div>
<div id="408" class="line"><div class="number">408</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="409" class="line"><div class="number">409</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">syntax</font><font class="Operator">'</font><font class="Normal">, </font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="410" class="line"><div class="number">410</div><font class="Normal">}</font></br></div>
<div id="411" class="line"><div class="number">411</div></br></div>
<div id="412" class="line"><div class="number">412</div><font class="Keyword">sub </font><font class="Function">Undo</font><font class="Normal"> {</font></br></div>
<div id="413" class="line"><div class="number">413</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="414" class="line"><div class="number">414</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="Operator">'</font><font class="String">undo</font><font class="Operator">'</font><font class="Normal">)) {</font></br></div>
<div id="415" class="line"><div class="number">415</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">Undo</font><font class="Normal">;</font></br></div>
<div id="416" class="line"><div class="number">416</div><font class="Normal"> }</font></br></div>
<div id="417" class="line"><div class="number">417</div><font class="Normal">}</font></br></div>
<div id="418" class="line"><div class="number">418</div></br></div>
<div id="419" class="line"><div class="number">419</div><font class="Keyword">sub </font><font class="Function">WriteText</font><font class="Normal"> {</font></br></div>
<div id="420" class="line"><div class="number">420</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal"> = </font><font class="Function">shift</font><font class="Normal">;</font></br></div>
<div id="421" class="line"><div class="number">421</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> </font><font class="DataType">@call</font><font class="Normal"> = </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">WriteText2Call</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="422" class="line"><div class="number">422</div><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">Broadcast</font><font class="Normal">(</font><font class="DataType">@call</font><font class="Normal">)) {</font></br></div>
<div id="423" class="line"><div class="number">423</div><font class="Normal"> </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">SUPER</font><font class="Normal">::</font><font class="DataType">WriteText</font><font class="Normal">(</font><font class="DataType">@_</font><font class="Normal">);</font></br></div>
<div id="424" class="line"><div class="number">424</div><font class="Normal"> }</font></br></div>
<div id="425" class="line"><div class="number">425</div><font class="Normal">}</font></br></div>
<div id="426" class="line"><div class="number">426</div></br></div>
<div id="427" class="line"><div class="number">427</div><font class="Keyword">sub </font><font class="Function">WriteText2Call</font><font class="Normal"> {</font></br></div>
<div id="428" class="line"><div class="number">428</div><font class="Normal"> </font><font class="Keyword">my</font><font class="Normal"> (</font><font class="DataType">$self</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">) = </font><font class="DataType">@_</font><font class="Normal">;</font></br></div>
<div id="429" class="line"><div class="number">429</div><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> (</font><font class="Operator">'</font><font class="String">write</font><font class="Operator">'</font><font class="Normal">, </font><font class="DataType">$self</font><font class="Normal">-></font><font class="DataType">GetInsertionPoint</font><font class="Normal">, </font><font class="DataType">$txt</font><font class="Normal">, </font><font class="DecVal">0</font><font class="Normal">);</font></br></div>
<div id="430" class="line"><div class="number">430</div><font class="Normal">}</font></br></div>
<div id="431" class="line"><div class="number">431</div></br></div>
<div id="432" class="line"><div class="number">432</div></br></div>
<div id="433" class="line"><div class="number">433</div><font class="DecVal">1</font><font class="Normal">;</font></br></div>
<div id="434" class="line"><div class="number">434</div><font class="Keyword">__END__</font></br></div>
</div>
</body>
</html>