Merge lp:~villemvainio/leo-editor/fix-nhist into lp:leo-editor/old-trunk

Proposed by Ville M. Vainio
Status: Needs review
Proposed branch: lp:~villemvainio/leo-editor/fix-nhist
Merge into: lp:leo-editor/old-trunk
Diff against target: None lines
To merge this branch: bzr merge lp:~villemvainio/leo-editor/fix-nhist
Reviewer Review Type Date Requested Status
The Leo editor team Pending
Review via email: mp+9271@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Ville M. Vainio (villemvainio) wrote :

- Fix linear slowdown as you keep using Leo (e.g. unit tests run much faster)
- Nodehistory (back/forward arrows) work predictably
- c.positionExists works for root level nodes

Unmerged revisions

2264. By Ville M. Vainio

validPosition considers 'root' (for chapter support)

2263. By Ville M. Vainio

augment unit test for c.positionExists() (handle root level positions)

2262. By Ville M. Vainio

different implementation of positionExists(): if we are at root node, check in children of hidden root vnode

2261. By Ville M. Vainio

use try-finally with skipBeadUpdate

2260. By Ville M. Vainio

safety precaution of skipping over nonexisting positions

2259. By Ville M. Vainio

Remove trace

2258. By Ville M. Vainio

fix nodeHistory & beadList logic

2257. By Edward K. Ream

added tag

2256. By Edward K. Ream

Preparing for Leo 4.6.1 final.
Updated version info.
Added @int qt_max_colorized_chars setting with default zero.
Added support for qt_max_colorized_chars setting in qtGui.py.
All unit tests pass.

2255. By Edward K. Ream

Made minimal change to eliminate properties dialog crasher.
Implementation of g.app.gui.runProperties dialog will happen in Leo 4.7.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'leo/config/leoSettings.leo'
2--- leo/config/leoSettings.leo 2009-07-17 18:23:31 +0000
3+++ leo/config/leoSettings.leo 2009-07-24 15:35:43 +0000
4@@ -9,7 +9,7 @@
5 <preferences/>
6 <find_panel_settings/>
7 <vnodes>
8-<v t="ekr.20070622214401" str_leo_pos="5,7,9"><vh>Startup</vh>
9+<v t="ekr.20070622214401" str_leo_pos="5"><vh>Startup</vh>
10 <v t="ekr.20070326094544"><vh>@chapters</vh></v>
11 <v t="ekr.20060112110750"><vh>Buttons</vh>
12 <v t="ekr.20051010093913"><vh>@@button Save</vh></v>
13@@ -98,7 +98,7 @@
14 <v t="ekr.20080514065934.1"><vh>About vim-like bindings</vh></v>
15 <v t="ekr.20080513060549.3"><vh>@strings [command,insert, overwrite] top_level_unbound_key_action = command</vh></v>
16 </v>
17-<v t="ekr.20041119034357.1" a="E"><vh>@settings</vh>
18+<v t="ekr.20041119034357.1"><vh>@settings</vh>
19 <v t="ekr.20070926132045"><vh>Common @button nodes</vh>
20 <v t="ekr.20070926082407"><vh>@buttons</vh>
21 <v t="ekr.20090703122042.7463"><vh>@@button a-common-button</vh></v>
22@@ -320,7 +320,7 @@
23 </v>
24 </v>
25 </v>
26-<v t="ekr.20061003173413" a="E"><vh>File options</vh>
27+<v t="ekr.20061003173413"><vh>File options</vh>
28 <v t="ekr.20041119034357.7"><vh>.leo file options</vh>
29 <v t="ekr.20041119034357.8"><vh>@string output_initial_comment = None</vh></v>
30 <v t="ekr.20041119034357.9"><vh>@string stylesheet = ekr_test</vh></v>
31@@ -1078,6 +1078,7 @@
32 <v t="ekr.20060919171527.2"><vh>@string opml_namespace = leo:com:leo-opml-version-1</vh></v>
33 </v>
34 <v t="ekr.20081018053140.11"><vh>qtGui plugin</vh>
35+<v t="ekr.20090724102452.6058"><vh>@int qt_max_colorized_chars = 0</vh></v>
36 <v t="ekr.20081023060109.14"><vh>@bool qt-use-scintilla = False</vh></v>
37 <v t="leohag.20081204085551.13"><vh>@string qt-ui-file-name = qt_main.ui</vh></v>
38 <v t="ekr.20081018053140.12"><vh>@data qt-gui-plugin-style-sheet</vh></v>
39@@ -7924,6 +7925,8 @@
40 <t tx="ekr.20090630073313.8521"></t>
41 <t tx="ekr.20090630073313.8522"></t>
42 <t tx="ekr.20090703122042.7463">print 'hi'</t>
43+<t tx="ekr.20090724102452.6058">If zero, all nodes are colorized, regardless of length of body text.
44+If &gt; 0, only nodes whose body text are smaller than this limit are colorized.</t>
45 <t tx="leohag.20081204085551.13"></t>
46 <t tx="tbrown.20081003103821.1">True: if the same file (basename) occurs more than once in the recent files
47 list, i.e. on two different paths it will appear as a submenu with the basename
48
49=== modified file 'leo/core/leoApp.py'
50--- leo/core/leoApp.py 2009-07-18 14:53:39 +0000
51+++ leo/core/leoApp.py 2009-07-18 14:55:12 +0000
52@@ -711,7 +711,7 @@
53 def computeSignon (self):
54
55 app = self
56- # buildNumber = leoVersion.buildNumber
57+ buildNumber = leoVersion.buildNumber
58 date = leoVersion.date
59 guiVersion = app.gui.getFullVersion()
60 leoVer = leoVersion.version
61@@ -727,10 +727,8 @@
62
63 else: sysVersion = sys.platform
64
65- # app.signon = 'Leo %s build %s, %s' % (
66- # leoVer,buildNumber,date)
67- app.signon = 'Leo %s, %s' % (
68- leoVer,date)
69+ app.signon = 'Leo %s build %s, %s' % (
70+ leoVer,buildNumber,date)
71 app.signon2 = 'Python %s.%s.%s, %s\n%s' % (
72 n1,n2,n3,guiVersion,sysVersion)
73 #@nonl
74
75=== modified file 'leo/core/leoCommands.py'
76--- leo/core/leoCommands.py 2009-07-18 14:53:39 +0000
77+++ leo/core/leoCommands.py 2009-07-25 12:02:30 +0000
78@@ -5407,8 +5407,12 @@
79 p = c.nodeHistory.goNext()
80
81 if p:
82- c.selectPosition(p)
83- c.redraw_after_select(p)
84+ c.nodeHistory.skipBeadUpdate = True
85+ try:
86+ c.selectPosition(p)
87+ finally:
88+ c.nodeHistory.skipBeadUpdate = False
89+ c.redraw_after_select(p)
90
91 #@-node:ekr.20031218072017.1628:goNextVisitedNode
92 #@+node:ekr.20031218072017.1627:goPrevVisitedNode
93@@ -5421,8 +5425,12 @@
94 p = c.nodeHistory.goPrev()
95
96 if p:
97- c.selectPosition(p)
98- c.redraw_after_select(p)
99+ c.nodeHistory.skipBeadUpdate = True
100+ try:
101+ c.selectPosition(p)
102+ finally:
103+ c.nodeHistory.skipBeadUpdate = False
104+ c.redraw_after_select(p)
105 #@-node:ekr.20031218072017.1627:goPrevVisitedNode
106 #@+node:ekr.20031218072017.2914:goToFirstNode
107 def goToFirstNode (self,event=None):
108@@ -7145,7 +7153,12 @@
109 if i >= len(children) or children[i] != old_v:
110 return False
111 else:
112- p.moveToBack()
113+ # root position, check from hidden root vnode
114+ i = p._childIndex
115+ rootchildren = root.v.parents[0].t.children
116+ if i >= len(rootchildren) or rootchildren[i] != p.v:
117+ return False
118+ return True
119
120 return False
121 #@-node:ekr.20040307104131.3:c.positionExists
122@@ -7884,6 +7897,7 @@
123 # nav_buttons and nodenavigator plugins.
124 self.beadPointer = -1
125 self.trace = False
126+ self.skipBeadUpdate = False
127 #@nonl
128 #@-node:ekr.20070615131604.1: ctor (nodeHistory)
129 #@+node:ekr.20070615131604.3:canGoToNext/Prev
130@@ -7914,24 +7928,35 @@
131 def goNext (self):
132
133 '''Return the next visited node, or None.'''
134- if self.beadPointer + 1 < len(self.beadList):
135+
136+ c = self.c
137+ while self.beadPointer + 1 < len(self.beadList):
138 self.beadPointer += 1
139 p,chapter = self.beadList[self.beadPointer]
140- self.selectChapter(chapter)
141- return p
142+ if c.positionExists(p):
143+ break
144 else:
145 return None
146
147+ self.selectChapter(chapter)
148+ return p
149+
150 def goPrev (self):
151
152 '''Return the previous visited node, or None.'''
153- if self.beadPointer > 0:
154+
155+ c = self.c
156+ while self.beadPointer > 0:
157 self.beadPointer -= 1
158 p,chapter = self.beadList[self.beadPointer]
159- self.selectChapter(chapter)
160- return p
161+ if c.positionExists(p):
162+ break
163 else:
164 return None
165+
166+
167+ self.selectChapter(chapter)
168+ return p
169 #@-node:ekr.20070615134813:goNext/Prev
170 #@+node:ekr.20070615132939.1:remove
171 def remove (self,p):
172@@ -7961,30 +7986,36 @@
173 if cc and chapter and chapter != cc.getSelectedChapter():
174 cc.selectChapterByName(chapter.name)
175 #@-node:ekr.20070615140032:selectChapter
176- #@+node:ekr.20070615131604.2:update
177+ #@+node:ville.20090724234020.14676:update
178 def update (self,p):
179
180 c = self.c
181-
182- self.beadList = [z for z in self.beadList
183- if c.positionExists(z[0])]
184-
185- positions = [z[0] for z in self.beadList]
186-
187- try:
188- self.beadPointer = positions.index(p)
189- except ValueError:
190- cc = c.chapterController
191- theChapter = cc and cc.getSelectedChapter()
192- data = (p.copy(),theChapter)
193- self.beadList.append(data)
194- self.beadPointer = len(self.beadList)-1
195-
196- if self.trace:
197+ if self.skipBeadUpdate:
198+ return
199+
200+ p = p.copy()
201+ if self.beadList and self.beadList[-1][0] == p:
202+ # do not re-append the same node
203+ return
204+
205+ cc = c.chapterController
206+ theChapter = cc and cc.getSelectedChapter()
207+ data = (p,theChapter)
208+
209+ if self.beadPointer < len(self.beadList) - 1:
210+ # if we came to new node, truncate bead list
211+ self.beadList = self.beadList[0:self.beadPointer]
212+
213+ self.beadList.append(data)
214+ self.beadPointer = len(self.beadList) - 1
215+
216+
217+ if self.trace:
218 g.trace('bead list',p.h)
219 g.pr([z[0].h for z in self.beadList])
220
221- #@-node:ekr.20070615131604.2:update
222+
223+ #@-node:ville.20090724234020.14676:update
224 #@+node:ekr.20070615140655:visitedPositions
225 def visitedPositions (self):
226
227
228=== modified file 'leo/core/leoProjects.txt'
229--- leo/core/leoProjects.txt 2009-07-18 14:53:39 +0000
230+++ leo/core/leoProjects.txt 2009-07-18 14:55:12 +0000
231@@ -466,7 +466,7 @@
232 def computeSignon (self):
233
234 app = self
235- # buildNumber = leoVersion.buildNumber
236+ buildNumber = leoVersion.buildNumber
237 date = leoVersion.date
238 guiVersion = app.gui.getFullVersion()
239 leoVer = leoVersion.version
240@@ -482,10 +482,8 @@
241
242 else: sysVersion = sys.platform
243
244- # app.signon = 'Leo %s build %s, %s' % (
245- # leoVer,buildNumber,date)
246- app.signon = 'Leo %s, %s' % (
247- leoVer,date)
248+ app.signon = 'Leo %s build %s, %s' % (
249+ leoVer,buildNumber,date)
250 app.signon2 = 'Python %s.%s.%s, %s\n%s' % (
251 n1,n2,n3,guiVersion,sysVersion)
252 #@nonl
253
254=== modified file 'leo/core/leoVersion.py'
255--- leo/core/leoVersion.py 2009-07-17 18:23:06 +0000
256+++ leo/core/leoVersion.py 2009-07-24 15:35:43 +0000
257@@ -5,10 +5,10 @@
258 #@@language python
259 #@@tabwidth -4
260
261-buildString = "$Revision: 4.7.0$" # sccs updates this.
262-buildNumber = buildString[10:-1] # Strip off $Revision and training $
263-date = "July 17, 2009"
264-version = "4.7 devel"
265+buildNumber = 2255
266+ # For now, just manually updated to bzr branch number.
267+date = "July 24, 2009"
268+version = "4.6.1 final"
269 #@nonl
270 #@-node:ekr.20090717092906.12765:@thin leoVersion.py
271 #@-leo
272
273=== modified file 'leo/dist/leo-post-install-script.py'
274--- leo/dist/leo-post-install-script.py 2009-07-10 17:08:24 +0000
275+++ leo/dist/leo-post-install-script.py 2009-07-18 14:35:31 +0000
276@@ -12,7 +12,7 @@
277 #@nl
278 #@<< make version >>
279 #@+node:ekr.20080916084557.2:<< make version >>
280-version = '4-6-rc1'
281+version = '4-6-1-final'
282 #@nonl
283 #@-node:ekr.20080916084557.2:<< make version >>
284 #@nl
285
286=== modified file 'leo/dist/leoDist.leo'
287--- leo/dist/leoDist.leo 2009-07-10 19:13:07 +0000
288+++ leo/dist/leoDist.leo 2009-07-18 14:35:31 +0000
289@@ -9,7 +9,7 @@
290 <preferences/>
291 <find_panel_settings/>
292 <vnodes>
293-<v t="ekr.20050315084904" str_leo_pos="2,4"><vh>Startup</vh>
294+<v t="ekr.20050315084904" str_leo_pos="5"><vh>Startup</vh>
295 <v t="ekr.20070325123540"><vh>@chapters</vh></v>
296 <v t="ekr.20050315084922"><vh>@button Spell</vh></v>
297 </v>
298@@ -20,7 +20,7 @@
299 <v t="EKR.20040519082027.34"><vh>@@file-thin ../../uninstall</vh></v>
300 </v>
301 </v>
302-<v t="EKR.20040519091259" a="E"><vh>Annoucements</vh>
303+<v t="EKR.20040519091259"><vh>Annoucements</vh>
304 <v t="EKR.20040519091259.1"><vh>Download statistics</vh></v>
305 <v t="EKR.20040519091259.2"><vh>Quotes of the month</vh>
306 <v t="ekr.20080901114425.2"><vh>Sept 2008</vh></v>
307@@ -33,10 +33,13 @@
308 <v t="EKR.20040519091259.3"><vh>November 2003</vh></v>
309 <v t="EKR.20040519091259.4"><vh>October 2003</vh></v>
310 </v>
311+<v t="ekr.20090718093249.5927"><vh>ANN: Leo 4.6.1 final</vh></v>
312+<v t="EKR.20040519091259.30"><vh>Previous announcements</vh>
313+<v t="ekr.20090718093249.5928"><vh>4.6</vh>
314+<v t="ekr.20090709085944.1401"><vh>ANN: Leo 4.6 rc1</vh></v>
315+<v t="ekr.20090620122333.1392"><vh>ANN: Leo 4.6 b2</vh></v>
316 <v t="ekr.20090325065530.1"><vh>ANN: Leo 4.6 b1</vh></v>
317-<v t="ekr.20090620122333.1392"><vh>ANN: Leo 4.6 b2</vh></v>
318-<v t="ekr.20090709085944.1401"><vh>ANN: Leo 4.6 rc1</vh></v>
319-<v t="EKR.20040519091259.30"><vh>Previous announcements</vh>
320+</v>
321 <v t="ekr.20080807093308.2"><vh>4.5</vh>
322 <v t="ekr.20080628062747.73"><vh>ANN: Leo 4.5 b1</vh></v>
323 <v t="ekr.20080807093308.1"><vh>ANN: Leo 4.5 b2</vh></v>
324@@ -49,7 +52,7 @@
325 </v>
326 </v>
327 </v>
328-<v t="EKR.20040519090846" a="E"><vh>Distribution files</vh>
329+<v t="EKR.20040519090846"><vh>Distribution files</vh>
330 <v t="EKR.20040519090846.2"><vh>@asis ../doc/INSTALL.TXT</vh>
331 <v t="EKR.20040519090846.3"><vh>System requirements</vh></v>
332 <v t="ekr.20080825083632.262"><vh>Leo's HOME directory</vh></v>
333@@ -63,7 +66,7 @@
334 <v t="EKR.20040519090846.9"><vh>@asis ../doc/README.TXT</vh></v>
335 </v>
336 <v t="ekr.20090620072519.1389"><vh>Distribution checklist</vh></v>
337-<v t="ekr.20080916084557.1" a="E"><vh>Make stuff</vh>
338+<v t="ekr.20080916084557.1"><vh>Make stuff</vh>
339 <v t="ekr.20080916084557.2" a="M"><vh>&lt;&lt; make version &gt;&gt;</vh></v>
340 <v t="ekr.20080913110741.1"
341 marks="ekr.20080916084557.2,"><vh>@thin leo-post-install-script.py</vh></v>
342@@ -168,7 +171,7 @@
343
344 Do a search and replace on this suffix.
345
346-Latest suffix: -rc1
347+Latest suffix: -final
348
349
350 </t>
351@@ -308,7 +311,7 @@
352 </t>
353 <t tx="EKR.20040519090846.8">Metadata-Version: 1.0
354 Name: leo
355-Version: 4.6-rc1
356+Version: 4.6.1-final
357 Summary: Leo: Literate Editor with Outlines
358 Home-page: http://webpages.charter.net/edreamleo/front.html
359 Author: Edward K. Ream
360@@ -328,15 +331,20 @@
361 Download tkIcon from http://www.effbot.org/downloads/#tkIcon
362 Platform: Windows, Linux, Macintosh
363 </t>
364-<t tx="EKR.20040519090846.9">Leo 4.6 release candidate 1 July 9, 2009
365+<t tx="EKR.20040519090846.9">Leo 4.6.1 final July 18, 2009
366
367-Leo 4.6 rc1 is now available at:
368+Leo 4.6.1 final is now available at:
369 http://sourceforge.net/project/showfiles.php?group_id=3458&amp;package_id=29106
370
371 Leo is a text editor, data organizer, project manager and much more. See:
372 http://webpages.charter.net/edreamleo/intro.html
373
374-The highlights of Leo 4.6:
375+Leo 4.6.1 fixes two bugs in Leo 4.6:
376+
377+- Leo's signon is now printed properly.
378+- Opening a file from the File menu now leaves the new window on top.
379+
380+The highlights of Leo 4.6
381 --------------------------
382
383 - Cached external files *greatly* reduces the time to load .leo files.
384@@ -1035,7 +1043,7 @@
385 os.system('dir %s' % (top))
386 </t>
387 <t tx="ekr.20080916084557.1"></t>
388-<t tx="ekr.20080916084557.2">version = '4-6-rc1'</t>
389+<t tx="ekr.20080916084557.2">version = '4-6-1-final'</t>
390 <t tx="ekr.20090325065530.1">Leo 4.6 b1 is now available at:
391 http://sourceforge.net/project/showfiles.php?group_id=3458&amp;package_id=29106
392
393@@ -1189,5 +1197,41 @@
394 Bzr: http://code.launchpad.net/leo-editor/
395 Quotes: http://webpages.charter.net/edreamleo/testimonials.html
396 </t>
397+<t tx="ekr.20090718093249.5927">Leo 4.6.1 final July 18, 2009
398+
399+Leo 4.6.1 final is now available at:
400+http://sourceforge.net/project/showfiles.php?group_id=3458&amp;package_id=29106
401+
402+Leo is a text editor, data organizer, project manager and much more. See:
403+http://webpages.charter.net/edreamleo/intro.html
404+
405+Leo 4.6.1 fixes two bugs in Leo 4.6:
406+
407+- Leo's signon is now printed properly.
408+- Opening a file from the File menu now leaves the new window on top.
409+
410+The highlights of Leo 4.6
411+--------------------------
412+
413+- Cached external files *greatly* reduces the time to load .leo files.
414+- Leo now features a modern Qt interface by default.
415+ Leo's legacy Tk interface can also be used.
416+- New --config, --file and --gui command-line options.
417+- Leo tests syntax of .py files when saving them.
418+- Leo can now open any kind of file into @edit nodes.
419+- @auto-rst nodes allow easy editing of reStructuredText files.
420+- Properties of commanders, positions and nodes simplify programming.
421+- Improved Leo's unit testing framework.
422+- Leo now requires Python 2.5 or later.
423+- Dozens of small improvements and bug fixes.
424+
425+Links:
426+------
427+Leo: http://webpages.charter.net/edreamleo/front.html
428+Forum: http://groups.google.com/group/leo-editor
429+Download: http://sourceforge.net/project/showfiles.php?group_id=3458
430+Bzr: http://code.launchpad.net/leo-editor/
431+Quotes: http://webpages.charter.net/edreamleo/testimonials.html</t>
432+<t tx="ekr.20090718093249.5928"></t>
433 </tnodes>
434 </leo_file>
435
436=== modified file 'leo/doc/LeoDocs.leo'
437--- leo/doc/LeoDocs.leo 2009-07-17 18:23:31 +0000
438+++ leo/doc/LeoDocs.leo 2009-07-18 14:32:43 +0000
439@@ -9,7 +9,7 @@
440 <preferences/>
441 <find_panel_settings/>
442 <vnodes>
443-<v t="ekr.20070610174018" str_leo_pos="4"><vh>Startup</vh>
444+<v t="ekr.20070610174018" str_leo_pos="6,1,1"><vh>Startup</vh>
445 <v t="ekr.20070325123558"><vh>@chapters</vh></v>
446 <v t="ekr.20050404094627"><vh>Buttons</vh>
447 <v t="ekr.20090712122931.10453"><vh>Disabled buttons</vh>
448@@ -64,7 +64,7 @@
449 <v t="ekr.20080301071818.1"><vh>@thin html/front.html</vh></v>
450 </v>
451 <v t="ekr.20090711120622.10446"><vh>Screen shots page</vh>
452-<v t="ekr.20090711120622.10447" tnodeList="ekr.20090711120622.10447"><vh>@edit screen-shots.html</vh></v>
453+<v t="ekr.20090711120622.10447"><vh>@@edit screen-shots.html</vh></v>
454 </v>
455 <v t="ekr.20090717084250.10703"><vh>Leo's users Guide</vh>
456 <v t="ville.20090521211406.6348" descendentVnodeUnknownAttributes="7d710028550b302e302e31302e302e313971017d710258120000007273745f687474705f61747472696275746571035d71042855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d343122206e616d653d22687474702d6e6f64652d6d61726b65722d3431223e710555043c2f613e71065d710728553d3c64697620636c6173733d2273656374696f6e222069643d2266756e6374696f6e732d646566696e65642d696e2d6c656f676c6f62616c732d7079223e710855063c2f6469763e71095d710a28553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e710b55063c2f6469763e710c5d710d2855063c626f64793e710e55073c2f626f64793e710f5d71102855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e711155073c2f68746d6c3e71124e6565656555073c2f6469763e0a7113553b3c64697620636c6173733d2273656374696f6e222069643d227265646972656374696e672d6f75747075742d66726f6d2d73637269707473223e0a711455783c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964323122206e616d653d227265646972656374696e672d6f75747075742d66726f6d2d73637269707473223e5265646972656374696e67206f75747075742066726f6d20736372697074733c2f613e3c2f68313e0a71156573550b302e302e31302e302e313571167d711758120000007273745f687474705f61747472696275746571185d71192855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d333122206e616d653d22687474702d6e6f64652d6d61726b65722d3331223e711a55043c2f613e711b5d711c28553a3c64697620636c6173733d2273656374696f6e222069643d2267657474696e672d616e642d73657474696e672d707265666572656e636573223e711d55063c2f6469763e711e5d711f28553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e712055063c2f6469763e71215d71222855063c626f64793e712355073c2f626f64793e71245d71252855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e712655073c2f68746d6c3e71274e6565656555073c2f6469763e0a712855503c64697620636c6173733d2273656374696f6e222069643d2266756e6374696f6e732d666f722d66696e64696e672d616e642d6368616e67696e672d746578742d66726f6d2d73637269707473223e0a712955a23c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313622206e616d653d2266756e6374696f6e732d666f722d66696e64696e672d616e642d6368616e67696e672d746578742d66726f6d2d73637269707473223e46756e6374696f6e7320666f722066696e64696e6720616e64206368616e67696e6720746578742066726f6d20736372697074733c2f613e3c2f68313e0a712a6573550b302e302e31302e302e3134712b7d712c58120000007273745f687474705f617474726962757465712d5d712e2855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d323922206e616d653d22687474702d6e6f64652d6d61726b65722d3239223e712f55043c2f613e71305d71312855393c64697620636c6173733d2273656374696f6e222069643d22696e766f6b696e672d636f6d6d616e64732d66726f6d2d73637269707473223e713255063c2f6469763e71335d713428553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e713555063c2f6469763e71365d71372855063c626f64793e713855073c2f626f64793e71395d713a2855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e713b55073c2f68746d6c3e713c4e6565656555073c2f6469763e0a713d553b3c64697620636c6173733d2273656374696f6e222069643d2267657474696e672d616e642d73657474696e672d707265666572656e636573223e0a713e55783c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313522206e616d653d2267657474696e672d616e642d73657474696e672d707265666572656e636573223e47657474696e6720616e642073657474696e6720707265666572656e6365733c2f613e3c2f68313e0a713f6573550b302e302e31302e302e313671407d714158120000007273745f687474705f61747472696275746571425d71432855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d333922206e616d653d22687474702d6e6f64652d6d61726b65722d3339223e714455043c2f613e71455d71462855343c64697620636c6173733d2273656374696f6e222069643d2272756e6e696e672d6c656f2d696e2d62617463682d6d6f6465223e714755063c2f6469763e71485d714928553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e714a55063c2f6469763e714b5d714c2855063c626f64793e714d55073c2f626f64793e714e5d714f2855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e715055073c2f68746d6c3e71514e6565656555073c2f6469763e0a7152553e3c64697620636c6173733d2273656374696f6e222069643d2266756e6374696f6e732d646566696e65642d696e2d6c656f676c6f62616c732d7079223e0a7153557e3c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964323022206e616d653d2266756e6374696f6e732d646566696e65642d696e2d6c656f676c6f62616c732d7079223e46756e6374696f6e7320646566696e656420696e206c656f476c6f62616c732e70793c2f613e3c2f68313e0a71546573550b302e302e31302e302e313171557d715658120000007273745f687474705f61747472696275746571575d71582855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d323522206e616d653d22687474702d6e6f64652d6d61726b65722d3235223e715955043c2f613e715a5d715b28553e3c64697620636c6173733d2273656374696f6e222069643d2274657374696e672d776865746865722d612d706f736974696f6e2d69732d76616c6964223e715c55063c2f6469763e715d5d715e28552e3c64697620636c6173733d2273656374696f6e222069643d2274726176657273696e672d6f75746c696e6573223e715f55063c2f6469763e71605d716128553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e716255063c2f6469763e71635d71642855063c626f64793e716555073c2f626f64793e71665d71672855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e716855073c2f68746d6c3e71694e656565656555073c2f6469763e0a716a55073c2f6469763e0a716b552f3c64697620636c6173733d2273656374696f6e222069643d227570646174696e672d7468652d73637265656e223e0a716c55603c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313322206e616d653d227570646174696e672d7468652d73637265656e223e5570646174696e67207468652073637265656e3c2f613e3c2f68313e0a716d6573550b302e302e31302e302e3130716e7d716f58120000007273745f687474705f61747472696275746571705d71712855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d313122206e616d653d22687474702d6e6f64652d6d61726b65722d3131223e717255043c2f613e71735d71742855453c64697620636c6173733d2273656374696f6e222069643d2267657474696e672d616e642d73657474696e672d686561646c696e652d616e642d626f64792d74657874223e717555063c2f6469763e71765d717728553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e717855063c2f6469763e71795d717a2855063c626f64793e717b55073c2f626f64793e717c5d717d2855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e717e55073c2f68746d6c3e717f4e6565656555073c2f6469763e0a7180552f3c64697620636c6173733d2273656374696f6e222069643d2274726176657273696e672d6f75746c696e6573223e0a7181555f3c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d222369643622206e616d653d2274726176657273696e672d6f75746c696e6573223e54726176657273696e67206f75746c696e65733c2f613e3c2f68313e0a71826573550b302e302e31302e302e313271837d718458120000007273745f687474705f61747472696275746571855d71862855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d323722206e616d653d22687474702d6e6f64652d6d61726b65722d3237223e718755043c2f613e71885d718928552e3c64697620636c6173733d2273656374696f6e222069643d227570646174696e672d7468652d73637265656e223e718a55063c2f6469763e718b5d718c28553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e718d55063c2f6469763e718e5d718f2855063c626f64793e719055073c2f626f64793e71915d71922855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e719355073c2f68746d6c3e71944e6565656555073c2f6469763e0a7195553a3c64697620636c6173733d2273656374696f6e222069643d22696e766f6b696e672d636f6d6d616e64732d66726f6d2d73637269707473223e0a719655763c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313422206e616d653d22696e766f6b696e672d636f6d6d616e64732d66726f6d2d73637269707473223e496e766f6b696e6720636f6d6d616e64732066726f6d20736372697074733c2f613e3c2f68313e0a71976573550d302e302e31302e302e32352e3171987d719958120000007273745f687474705f617474726962757465719a5d719b2855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d343722206e616d653d22687474702d6e6f64652d6d61726b65722d3437223e719c55043c2f613e719d5d719e2855243c64697620636c6173733d2273656374696f6e222069643d226974657261746f7273223e719f55063c2f6469763e71a05d71a12855443c64697620636c6173733d2273656374696f6e222069643d2273756d6d6172792d6f662d7468652d766e6f64652d616e642d706f736974696f6e2d636c6173736573223e71a255063c2f6469763e71a35d71a428553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e71a555063c2f6469763e71a65d71a72855063c626f64793e71a855073c2f626f64793e71a95d71aa2855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e71ab55073c2f68746d6c3e71ac4e656565656555073c2f6469763e0a71ad55233c64697620636c6173733d2273656374696f6e222069643d2267657474657273223e0a71ae55483c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964323422206e616d653d2267657474657273223e476574746572733c2f613e3c2f68323e0a71af6573550d302e302e31302e302e32352e3071b07d71b158120000007273745f687474705f61747472696275746571b25d71b32855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d343522206e616d653d22687474702d6e6f64652d6d61726b65722d3435223e71b455043c2f613e71b55d71b62855443c64697620636c6173733d2273656374696f6e222069643d2273756d6d6172792d6f662d7468652d766e6f64652d616e642d706f736974696f6e2d636c6173736573223e71b755063c2f6469763e71b85d71b928553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e71ba55063c2f6469763e71bb5d71bc2855063c626f64793e71bd55073c2f626f64793e71be5d71bf2855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e71c055073c2f68746d6c3e71c14e6565656555253c64697620636c6173733d2273656374696f6e222069643d226974657261746f7273223e0a71c2554c3c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964323322206e616d653d226974657261746f7273223e4974657261746f72733c2f613e3c2f68323e0a71c36573550d302e302e31302e302e32352e3271c47d71c558120000007273745f687474705f61747472696275746571c65d71c72855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d343922206e616d653d22687474702d6e6f64652d6d61726b65722d3439223e71c855043c2f613e71c95d71ca2855223c64697620636c6173733d2273656374696f6e222069643d2267657474657273223e71cb55063c2f6469763e71cc5d71cd2855443c64697620636c6173733d2273656374696f6e222069643d2273756d6d6172792d6f662d7468652d766e6f64652d616e642d706f736974696f6e2d636c6173736573223e71ce55063c2f6469763e71cf5d71d028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e71d155063c2f6469763e71d25d71d32855063c626f64793e71d455073c2f626f64793e71d55d71d62855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e71d755073c2f68746d6c3e71d84e656565656555073c2f6469763e0a71d955233c64697620636c6173733d2273656374696f6e222069643d2273657474657273223e0a71da55483c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964323522206e616d653d2273657474657273223e536574746572733c2f613e3c2f68323e0a71db65735509302e302e342e302e3971dc7d71dd58120000007273745f687474705f61747472696275746571de5d71df2855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d333722206e616d653d22687474702d6e6f64652d6d61726b65722d3337223e71e055043c2f613e71e15d71e22855263c64697620636c6173733d2273656374696f6e222069643d22672d726566696e64616c6c223e71e355063c2f6469763e71e45d71e528554f3c64697620636c6173733d2273656374696f6e222069643d2266756e6374696f6e732d666f722d66696e64696e672d616e642d6368616e67696e672d746578742d66726f6d2d73637269707473223e71e655063c2f6469763e71e75d71e828553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e71e955063c2f6469763e71ea5d71eb2855063c626f64793e71ec55073c2f626f64793e71ed5d71ee2855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e71ef55073c2f68746d6c3e71f04e656565656555073c2f6469763e0a71f155073c2f6469763e0a71f255353c64697620636c6173733d2273656374696f6e222069643d2272756e6e696e672d6c656f2d696e2d62617463682d6d6f6465223e0a71f3556c3c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313922206e616d653d2272756e6e696e672d6c656f2d696e2d62617463682d6d6f6465223e52756e6e696e67204c656f20696e206261746368206d6f64653c2f613e3c2f68313e0a71f46573550b302e302e31302e302e323571f57d71f658120000007273745f687474705f61747472696275746571f75d71f82855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d343322206e616d653d22687474702d6e6f64652d6d61726b65722d3433223e71f955043c2f613e71fa5d71fb28553a3c64697620636c6173733d2273656374696f6e222069643d227265646972656374696e672d6f75747075742d66726f6d2d73637269707473223e71fc55063c2f6469763e71fd5d71fe28553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e71ff55063c2f6469763e72000100005d72010100002855063c626f64793e720201000055073c2f626f64793e72030100005d72040100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e720501000055073c2f68746d6c3e72060100004e6565656555073c2f6469763e0a720701000055453c64697620636c6173733d2273656374696f6e222069643d2273756d6d6172792d6f662d7468652d766e6f64652d616e642d706f736974696f6e2d636c6173736573223e0a7208010000558c3c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964323222206e616d653d2273756d6d6172792d6f662d7468652d766e6f64652d616e642d706f736974696f6e2d636c6173736573223e53756d6d617279206f662074686520766e6f646520616e6420706f736974696f6e20636c61737365733c2f613e3c2f68313e0a72090100006573550b302e302e31302e302e3237720a0100007d720b01000058120000007273745f687474705f617474726962757465720c0100005d720d0100002855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d333722206e616d653d22687474702d6e6f64652d6d61726b65722d3337223e720e01000055043c2f613e720f0100005d72100100002855263c64697620636c6173733d2273656374696f6e222069643d22672d726566696e64616c6c223e721101000055063c2f6469763e72120100005d721301000028554f3c64697620636c6173733d2273656374696f6e222069643d2266756e6374696f6e732d666f722d66696e64696e672d616e642d6368616e67696e672d746578742d66726f6d2d73637269707473223e721401000055063c2f6469763e72150100005d721601000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e721701000055063c2f6469763e72180100005d72190100002855063c626f64793e721a01000055073c2f626f64793e721b0100005d721c0100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e721d01000055073c2f68746d6c3e721e0100004e656565656555073c2f6469763e0a721f01000055073c2f6469763e0a722001000055353c64697620636c6173733d2273656374696f6e222069643d2272756e6e696e672d6c656f2d696e2d62617463682d6d6f6465223e0a7221010000556c3c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313922206e616d653d2272756e6e696e672d6c656f2d696e2d62617463682d6d6f6465223e52756e6e696e67204c656f20696e206261746368206d6f64653c2f613e3c2f68313e0a72220100006573550d302e302e31352e302e31382e3072230100007d72240100005808000000616e6e6f746174657225010000540c01000037643731303032383535303837303732363936663732363937343739373130313238363336313665366536663734363137343635306135343662353036393633366236633635353636313732306137313032366637313033346430663237363235353034366536663634363537313035323836383032366637313036353530343636363936633635373130373632353530323632363737313038323836383032366637313039353530303731306136323535303936313732363336383635373437393730363537313062323836383032366637313063353530353466373436383635373237313064363235353032363636373731306532383638303236663731306636383061363237353265722601000073550a302e302e31302e302e3272270100007d722801000058120000007273745f687474705f61747472696275746572290100005d722a0100002855443c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d3122206e616d653d22687474702d6e6f64652d6d61726b65722d31223e722b01000055043c2f613e722c0100005d722d01000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e722e01000055063c2f6469763e722f0100005d72300100002855063c626f64793e723101000055073c2f626f64793e72320100005d72330100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e723401000055073c2f68746d6c3e72350100004e65656555243c64697620636c6173733d2273656374696f6e222069643d226f76657276696577223e0a723601000055493c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d222369643122206e616d653d226f76657276696577223e4f766572766965773c2f613e3c2f68313e0a72370100006573550a302e302e31302e302e3572380100007d723901000058120000007273745f687474705f617474726962757465723a0100005d723b0100002855443c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d3722206e616d653d22687474702d6e6f64652d6d61726b65722d37223e723c01000055043c2f613e723d0100005d723e0100002855353c64697620636c6173733d2273656374696f6e222069643d22672d65732d77726974652d746f2d7468652d6c6f672d70616e65223e723f01000055063c2f6469763e72400100005d724101000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e724201000055063c2f6469763e72430100005d72440100002855063c626f64793e724501000055073c2f626f64793e72460100005d72470100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e724801000055073c2f68746d6c3e72490100004e6565656555073c2f6469763e0a724a01000055463c64697620636c6173733d2273656374696f6e222069643d226170702d77696e646f776c6973742d7468652d6c6973742d6f662d616c6c2d6f70656e2d6672616d6573223e0a724b010000558e3c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d222369643422206e616d653d226170702d77696e646f776c6973742d7468652d6c6973742d6f662d616c6c2d6f70656e2d6672616d6573223e6170702e77696e646f774c6973743a20746865206c697374206f6620616c6c206f70656e206672616d65733c2f613e3c2f68313e0a724c0100006573550a302e302e31302e302e34724d0100007d724e01000058120000007273745f687474705f617474726962757465724f0100005d72500100002855443c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d3522206e616d653d22687474702d6e6f64652d6d61726b65722d35223e725101000055043c2f613e72520100005d72530100002855403c64697620636c6173733d2273656374696f6e222069643d22672d746f702d7468652d636f6d6d616e6465722d6f662d7468652d746f702d77696e646f77223e725401000055063c2f6469763e72550100005d725601000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e725701000055063c2f6469763e72580100005d72590100002855063c626f64793e725a01000055073c2f626f64793e725b0100005d725c0100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e725d01000055073c2f68746d6c3e725e0100004e6565656555073c2f6469763e0a725f01000055363c64697620636c6173733d2273656374696f6e222069643d22672d65732d77726974652d746f2d7468652d6c6f672d70616e65223e0a726001000055703c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d222369643322206e616d653d22672d65732d77726974652d746f2d7468652d6c6f672d70616e65223e672e657328293a20777269746520746f20746865206c6f672070616e653c2f613e3c2f68313e0a72610100006573550a302e302e31302e302e3672620100007d726301000058120000007273745f687474705f61747472696275746572640100005d72650100002855443c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d3922206e616d653d22687474702d6e6f64652d6d61726b65722d39223e726601000055043c2f613e72670100005d72680100002855453c64697620636c6173733d2273656374696f6e222069643d226170702d77696e646f776c6973742d7468652d6c6973742d6f662d616c6c2d6f70656e2d6672616d6573223e726901000055063c2f6469763e726a0100005d726b01000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e726c01000055063c2f6469763e726d0100005d726e0100002855063c626f64793e726f01000055073c2f626f64793e72700100005d72710100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e727201000055073c2f68746d6c3e72730100004e6565656555073c2f6469763e0a727401000055463c64697620636c6173733d2273656374696f6e222069643d2267657474696e672d616e642d73657474696e672d686561646c696e652d616e642d626f64792d74657874223e0a7275010000558d3c68313e3c6120636c6173733d22746f632d6261636b7265662220687265663d222369643522206e616d653d2267657474696e672d616e642d73657474696e672d686561646c696e652d616e642d626f64792d74657874223e47657474696e6720616e642073657474696e6720686561646c696e6520616e6420626f647920746578743c2f613e3c2f68313e0a72760100006573550d302e302e31302e302e31302e3172770100007d727801000058120000007273745f687474705f61747472696275746572790100005d727a0100002855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d313522206e616d653d22687474702d6e6f64652d6d61726b65722d3135223e727b01000055043c2f613e727c0100005d727d01000028552a3c64697620636c6173733d2273656374696f6e222069643d22632d616c6c6e6f6465732d69746572223e727e01000055063c2f6469763e727f0100005d728001000028552e3c64697620636c6173733d2273656374696f6e222069643d2274726176657273696e672d6f75746c696e6573223e728101000055063c2f6469763e72820100005d728301000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e728401000055063c2f6469763e72850100005d72860100002855063c626f64793e728701000055073c2f626f64793e72880100005d72890100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e728a01000055073c2f68746d6c3e728b0100004e656565656555073c2f6469763e0a728c010000552b3c64697620636c6173733d2273656374696f6e222069643d22702d6368696c6472656e2d69746572223e0a728d01000055573c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d222369643822206e616d653d22702d6368696c6472656e2d69746572223e702e6368696c6472656e5f697465723c2f613e3c2f68323e0a728e0100006573550d302e302e31302e302e31302e30728f0100007d729001000058120000007273745f687474705f61747472696275746572910100005d72920100002855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d313322206e616d653d22687474702d6e6f64652d6d61726b65722d3133223e729301000055043c2f613e72940100005d729501000028552e3c64697620636c6173733d2273656374696f6e222069643d2274726176657273696e672d6f75746c696e6573223e729601000055063c2f6469763e72970100005d729801000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e729901000055063c2f6469763e729a0100005d729b0100002855063c626f64793e729c01000055073c2f626f64793e729d0100005d729e0100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e729f01000055073c2f68746d6c3e72a00100004e65656565552b3c64697620636c6173733d2273656374696f6e222069643d22632d616c6c6e6f6465732d69746572223e0a72a101000055573c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d222369643722206e616d653d22632d616c6c6e6f6465732d69746572223e632e616c6c4e6f6465735f697465723c2f613e3c2f68323e0a72a20100006573550d302e302e31302e302e31302e3372a30100007d72a401000058120000007273745f687474705f61747472696275746572a50100005d72a60100002855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d313922206e616d653d22687474702d6e6f64652d6d61726b65722d3139223e72a701000055043c2f613e72a80100005d72a90100002855453c64697620636c6173733d2273656374696f6e222069643d22702d706172656e74732d697465722d616e642d702d73656c662d616e642d706172656e74732d69746572223e72aa01000055063c2f6469763e72ab0100005d72ac01000028552e3c64697620636c6173733d2273656374696f6e222069643d2274726176657273696e672d6f75746c696e6573223e72ad01000055063c2f6469763e72ae0100005d72af01000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e72b001000055063c2f6469763e72b10100005d72b20100002855063c626f64793e72b301000055073c2f626f64793e72b40100005d72b50100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e72b601000055073c2f68746d6c3e72b70100004e656565656555073c2f6469763e0a72b801000055493c64697620636c6173733d2273656374696f6e222069643d22702d7369626c696e67732d697465722d616e642d702d666f6c6c6f77696e672d7369626c696e67732d69746572223e0a72b901000055943c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313022206e616d653d22702d7369626c696e67732d697465722d616e642d702d666f6c6c6f77696e672d7369626c696e67732d69746572223e702e7369626c696e67735f6974657220616e6420702e666f6c6c6f77696e675f7369626c696e67735f697465723c2f613e3c2f68323e0a72ba0100006573550d302e302e31302e302e31302e3272bb0100007d72bc01000058120000007273745f687474705f61747472696275746572bd0100005d72be0100002855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d313722206e616d653d22687474702d6e6f64652d6d61726b65722d3137223e72bf01000055043c2f613e72c00100005d72c101000028552a3c64697620636c6173733d2273656374696f6e222069643d22702d6368696c6472656e2d69746572223e72c201000055063c2f6469763e72c30100005d72c401000028552e3c64697620636c6173733d2273656374696f6e222069643d2274726176657273696e672d6f75746c696e6573223e72c501000055063c2f6469763e72c60100005d72c701000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e72c801000055063c2f6469763e72c90100005d72ca0100002855063c626f64793e72cb01000055073c2f626f64793e72cc0100005d72cd0100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e72ce01000055073c2f68746d6c3e72cf0100004e656565656555073c2f6469763e0a72d001000055463c64697620636c6173733d2273656374696f6e222069643d22702d706172656e74732d697465722d616e642d702d73656c662d616e642d706172656e74732d69746572223e0a72d1010000558d3c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d222369643922206e616d653d22702d706172656e74732d697465722d616e642d702d73656c662d616e642d706172656e74732d69746572223e702e706172656e74735f6974657220616e6420702e73656c665f616e645f706172656e74735f697465723c2f613e3c2f68323e0a72d20100006573550d302e302e31302e302e31302e3572d30100007d72d401000058120000007273745f687474705f61747472696275746572d50100005d72d60100002855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d323322206e616d653d22687474702d6e6f64652d6d61726b65722d3233223e72d701000055043c2f613e72d80100005d72d90100002855453c64697620636c6173733d2273656374696f6e222069643d22702d737562747265652d697465722d616e642d702d73656c662d616e642d737562747265652d69746572223e72da01000055063c2f6469763e72db0100005d72dc01000028552e3c64697620636c6173733d2273656374696f6e222069643d2274726176657273696e672d6f75746c696e6573223e72dd01000055063c2f6469763e72de0100005d72df01000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e72e001000055063c2f6469763e72e10100005d72e20100002855063c626f64793e72e301000055073c2f626f64793e72e40100005d72e50100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e72e601000055073c2f68746d6c3e72e70100004e656565656555073c2f6469763e0a72e8010000553f3c64697620636c6173733d2273656374696f6e222069643d2274657374696e672d776865746865722d612d706f736974696f6e2d69732d76616c6964223e0a72e901000055803c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313222206e616d653d2274657374696e672d776865746865722d612d706f736974696f6e2d69732d76616c6964223e54657374696e672077686574686572206120706f736974696f6e2069732076616c69643c2f613e3c2f68323e0a72ea0100006573550d302e302e31302e302e31302e3472eb0100007d72ec01000058120000007273745f687474705f61747472696275746572ed0100005d72ee0100002855463c6120636c6173733d22746172676574222069643d22687474702d6e6f64652d6d61726b65722d323122206e616d653d22687474702d6e6f64652d6d61726b65722d3231223e72ef01000055043c2f613e72f00100005d72f10100002855483c64697620636c6173733d2273656374696f6e222069643d22702d7369626c696e67732d697465722d616e642d702d666f6c6c6f77696e672d7369626c696e67732d69746572223e72f201000055063c2f6469763e72f30100005d72f401000028552e3c64697620636c6173733d2273656374696f6e222069643d2274726176657273696e672d6f75746c696e6573223e72f501000055063c2f6469763e72f60100005d72f701000028553f3c64697620636c6173733d22646f63756d656e74222069643d22636861707465722d372d736372697074696e672d6c656f2d776974682d707974686f6e223e72f801000055063c2f6469763e72f90100005d72fa0100002855063c626f64793e72fb01000055073c2f626f64793e72fc0100005d72fd0100002855433c68746d6c20786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c2220786d6c3a6c616e673d22656e22206c616e673d22656e223e72fe01000055073c2f68746d6c3e72ff0100004e656565656555073c2f6469763e0a720002000055463c64697620636c6173733d2273656374696f6e222069643d22702d737562747265652d697465722d616e642d702d73656c662d616e642d737562747265652d69746572223e0a7201020000558e3c68323e3c6120636c6173733d22746f632d6261636b7265662220687265663d22236964313122206e616d653d22702d737562747265652d697465722d616e642d702d73656c662d616e642d737562747265652d69746572223e702e737562747265655f6974657220616e6420702e73656c665f616e645f737562747265655f697465723c2f613e3c2f68323e0a72020200006573752e"
457@@ -89,7 +89,7 @@
458 </v>
459 </v>
460 </v>
461-<v t="edream.110203163054.46"><vh>Release Notes</vh>
462+<v t="edream.110203163054.46" a="E"><vh>Release Notes</vh>
463 <v t="edream.110203163054.117"><vh>Previous versions...</vh>
464 <v t="ekr.20050210102358"><vh>4.0... New read logic eliminates read errors, eliminated child indices</vh>
465 <v t="edream.110203163054.66"><vh>4.0.1 through 4.0.4</vh></v>
466@@ -1996,23 +1996,6 @@
467 </v>
468 </v>
469 </v>
470-</v>
471-</v>
472-<v t="edream.110203163054.63"><vh>Latest version</vh>
473-<v t="ekr.20090324145450.20"><vh>What's New in Leo 4.6</vh>
474-<v t="ekr.20090324145450.21"><vh>@rst html\new-4-6.html</vh>
475-<v t="ekr.20090324145450.22"><vh>@rst-no-head links</vh></v>
476-<v t="ekr.20090620073906.12095"><vh>Improved unit testing</vh></v>
477-<v t="ekr.20090324145450.23" a="M"><vh>Improved file handling</vh></v>
478-<v t="ekr.20090620082840.5608"><vh>Improved handling of rST files</vh></v>
479-<v t="ekr.20090324145450.27"><vh>New code features</vh></v>
480-<v t="ekr.20090324145450.36"><vh>New command-line options</vh></v>
481-<v t="ekr.20090324145450.40"><vh>New commands</vh></v>
482-<v t="ekr.20090324145450.46"><vh>New and improved directives</vh></v>
483-<v t="ekr.20090324145450.49" a="M"><vh>New settings</vh></v>
484-<v t="ekr.20090324145450.54"><vh>Plugins</vh></v>
485-</v>
486-</v>
487 <v t="ekr.20090717084250.10808"><vh>4.6 final</vh>
488 <v t="ekr.20090717084250.10809"><vh>Bug fixes</vh>
489 <v t="ekr.20090717084250.10810"><vh>Bugs fixed in 4.6 b2</vh>
490@@ -2132,6 +2115,140 @@
491 </v>
492 </v>
493 </v>
494+<v t="edream.110203163054.63" a="E"><vh>Latest version</vh>
495+<v t="ekr.20090324145450.20"><vh>What's New in Leo 4.6</vh>
496+<v t="ekr.20090324145450.21"><vh>@rst html\new-4-6.html</vh>
497+<v t="ekr.20090324145450.22"><vh>@rst-no-head links</vh></v>
498+<v t="ekr.20090620073906.12095"><vh>Improved unit testing</vh></v>
499+<v t="ekr.20090324145450.23" a="M"><vh>Improved file handling</vh></v>
500+<v t="ekr.20090620082840.5608"><vh>Improved handling of rST files</vh></v>
501+<v t="ekr.20090324145450.27"><vh>New code features</vh></v>
502+<v t="ekr.20090324145450.36"><vh>New command-line options</vh></v>
503+<v t="ekr.20090324145450.40"><vh>New commands</vh></v>
504+<v t="ekr.20090324145450.46"><vh>New and improved directives</vh></v>
505+<v t="ekr.20090324145450.49" a="M"><vh>New settings</vh></v>
506+<v t="ekr.20090324145450.54"><vh>Plugins</vh></v>
507+</v>
508+</v>
509+<v t="ekr.20090718092032.10405"><vh>4.6.1 final</vh>
510+<v t="ekr.20090718092032.10406"><vh>Bug fixes</vh>
511+<v t="ekr.20090718092032.10407"><vh>Bugs fixed in 4.6 b2</vh>
512+<v t="ekr.20090718092032.10408"><vh>Added patch for startup logic</vh></v>
513+<v t="ekr.20090718092032.10409"><vh>Allocate gnx's when nodes are created</vh></v>
514+<v t="ekr.20090718092032.10410"><vh>Allow block comments in private shadow files</vh></v>
515+<v t="ekr.20090718092032.10411"><vh>Compute delims from private shadow file as needed</vh></v>
516+<v t="ekr.20090718092032.10412"><vh>Don't copy @edit trees to outline</vh></v>
517+<v t="ekr.20090718092032.10413"><vh>Don't expand ancestors of @chapter node when selecting chapter</vh></v>
518+<v t="ekr.20090718092032.10414"><vh>Entries in recent files menu now have absolute paths</vh></v>
519+<v t="ekr.20090718092032.10415"><vh>Fixed (worked around) tk chapters bug</vh></v>
520+<v t="ekr.20090718092032.10416"><vh>Fixed @edit bug</vh></v>
521+<v t="ekr.20090718092032.10417"><vh>Fixed @shadow crasher</vh></v>
522+<v t="ekr.20090718092032.10418"><vh>Fixed @thin bug</vh></v>
523+<v t="ekr.20090718092032.10419"><vh>Fixed back-to-home so it works as expected</vh></v>
524+<v t="ekr.20090718092032.10420"><vh>Fixed bad @verbatim bug</vh></v>
525+<v t="ekr.20090718092032.10421"><vh>Fixed binding problem with notebook</vh></v>
526+<v t="ekr.20090718092032.10422"><vh>Fixed bug: sorting could revert headline changes</vh></v>
527+<v t="ekr.20090718092032.10423"><vh>Fixed crash when reading .zip files</vh></v>
528+<v t="ekr.20090718092032.10424"><vh>Fixed crasher when creating .leoID.txt</vh></v>
529+<v t="ekr.20090718092032.10425"><vh>Fixed dabbrev-expands bug</vh></v>
530+<v t="ekr.20090718092032.10426"><vh>Fixed elisp importer problem</vh></v>
531+<v t="ekr.20090718092032.10427"><vh>Fixed F10/11/12 key bug</vh></v>
532+<v t="ekr.20090718092032.10428"><vh>Fixed file bug re unicode characters</vh></v>
533+<v t="ekr.20090718092032.10429"><vh>Fixed hoist problems</vh></v>
534+<v t="ekr.20090718092032.10430"><vh>Fixed lost anchor bug page up/down</vh></v>
535+<v t="ekr.20090718092032.10431"><vh>Fixed minor @auto bug</vh></v>
536+<v t="ekr.20090718092032.10432"><vh>Fixed multiple-editor focus problems</vh></v>
537+<v t="ekr.20090718092032.10433"><vh>Fixed new command</vh></v>
538+<v t="ekr.20090718092032.10434"><vh>Fixed problems with change-all command</vh></v>
539+<v t="ekr.20090718092032.10435"><vh>Fixed read clone bug</vh></v>
540+<v t="ekr.20090718092032.10436"><vh>Fixed rst import bug</vh></v>
541+<v t="ekr.20090718092032.10437"><vh>Fixed rst3 problem</vh></v>
542+<v t="ekr.20090718092032.10438"><vh>Fixed seg-fault bug</vh></v>
543+<v t="ekr.20090718092032.10439"><vh>Fixed Shift-Arrow in headlines</vh></v>
544+<v t="ekr.20090718092032.10440"><vh>Fixed startup problem</vh></v>
545+<v t="ekr.20090718092032.10441"><vh>Fixed stubConfig problems</vh></v>
546+<v t="ekr.20090718092032.10442"><vh>Fixed undo bug</vh></v>
547+<v t="ekr.20090718092032.10443"><vh>Fixed vim bindings (dd) bug</vh></v>
548+<v t="ekr.20090718092032.10444"><vh>Investigated bug: File-&gt;Export-&gt;write failed due to incorrect path</vh></v>
549+<v t="ekr.20090718092032.10445"><vh>Investigated speed of external unit tests</vh></v>
550+<v t="ekr.20090718092032.10446"><vh>Made @url nodes work with qt gui</vh></v>
551+<v t="ekr.20090718092032.10447"><vh>Mark @&lt;file&gt; nodes dirty when @path nodes change</vh></v>
552+<v t="ekr.20090718092032.10448"><vh>Removed duplicate messages when opening non-existent .leo file</vh></v>
553+<v t="ekr.20090718092032.10449"><vh>Reversed messages about redefined keys</vh></v>
554+<v t="ekr.20090718092032.10450"><vh>Scroll commands now affect only scrollbars</vh></v>
555+</v>
556+<v t="ekr.20090718092032.10451"><vh>Bugs fixed in 4.6 b1</vh>
557+<v t="ekr.20090718092032.10452"><vh>Fixed goto-global-line crasher</vh></v>
558+<v t="ekr.20090718092032.10453"><vh>Fixed bug that prevented Leo from opening files on the XP desktop</vh></v>
559+<v t="ekr.20090718092032.10454"><vh>Save/restore tnodeList in atFile.write</vh></v>
560+<v t="ekr.20090718092032.10455"><vh>Paste outline problem</vh></v>
561+<v t="ekr.20090718092032.10456"><vh>Made sure $Home works for @nosent</vh></v>
562+<v t="ekr.20090718092032.10457"><vh>Fixed atFile unicode bug</vh></v>
563+<v t="ekr.20090718092032.10458"><vh>Fixed Mark Edgington's @shadow bug</vh></v>
564+<v t="ekr.20090718092032.10459"><vh>Fixed whitespace problems with @auto/@shadow</vh></v>
565+<v t="ekr.20090718092032.10460"><vh>Fixed nested @path problem</vh></v>
566+<v t="ekr.20090718092032.10461"><vh>Fixed encoding problems with rst3 plugin</vh></v>
567+<v t="ekr.20090718092032.10462"><vh>Fixed new rst3 crash</vh></v>
568+<v t="ekr.20090718092032.10463"><vh>Fixed two c syntax-coloring bugs</vh></v>
569+</v>
570+</v>
571+<v t="ekr.20090718092032.10464"><vh>New features</vh>
572+<v t="ekr.20090718092032.10465"><vh>New features in 4.6 b1</vh>
573+<v t="ekr.20090718092032.10466"><vh>Improved file handling</vh>
574+<v t="ekr.20090718092032.10467"><vh>Open a default .leo file if no other is specified</vh></v>
575+<v t="ekr.20090718092032.10468"><vh>Added escapes for underindented lines</vh></v>
576+<v t="ekr.20090718092032.10469"><vh>Warn when writing an externally changed file</vh></v>
577+</v>
578+<v t="ekr.20090718092032.10470"><vh>New code features</vh>
579+<v t="ekr.20090718092032.10471"><vh>Added autoCompleter.getExternalCompletions</vh></v>
580+<v t="ekr.20090718092032.10472"><vh>Added g.posList</vh></v>
581+<v t="ekr.20090718092032.10473"><vh>Better plugin info</vh></v>
582+<v t="ekr.20090718092032.10474"><vh>Added properties to leoNodes.py</vh></v>
583+<v t="ekr.20090718092032.10475"><vh>Added script to leoSettings.leo to ensure all menu items are valid</vh></v>
584+<v t="ekr.20090718092032.10476"><vh>Added c.config.getSettingSource</vh></v>
585+<v t="ekr.20090718092032.10477"><vh>Predefined 'self' in @test/@suite nodes</vh></v>
586+<v t="ekr.20090718092032.10478"><vh>Added c.getNodePath and c.getNodeFileName</vh></v>
587+</v>
588+<v t="ekr.20090718092032.10479"><vh>New command-line options</vh>
589+<v t="ekr.20090718092032.10480"><vh>Added -c option to specify config files</vh></v>
590+<v t="ekr.20090718092032.10481"><vh>Added support for --file=fileName command-line option</vh></v>
591+<v t="ekr.20090718092032.10482"><vh>Added support for --gui option</vh></v>
592+</v>
593+<v t="ekr.20090718092032.10483"><vh>New commands</vh>
594+<v t="ekr.20090718092032.10484"><vh>Added smart home (back-to-home) command</vh></v>
595+<v t="ekr.20090718092032.10485"><vh>The open command creates @edit nodes when opening non-.leo files</vh></v>
596+<v t="ekr.20090718092032.10486"><vh>added pdb minibuffer command</vh></v>
597+<v t="ekr.20090718092032.10487"><vh>Added support for smart_tab setting</vh></v>
598+<v t="ekr.20090718092032.10488"><vh>Improved isearch commands</vh></v>
599+</v>
600+<v t="ekr.20090718092032.10489"><vh>New and improved directives</vh>
601+<v t="ekr.20090718092032.10490"><vh>Added @nocolor-node directive</vh></v>
602+<v t="ekr.20090718092032.10491"><vh>Improved @path handling</vh></v>
603+</v>
604+<v t="ekr.20090718092032.10492"><vh>New settings</vh>
605+<v t="ekr.20090718092032.10493"><vh>Added better default fonts for Leo on Linux</vh></v>
606+<v t="ekr.20090718092032.10494"><vh>Added support for @int icon_bar_widgets_per_row setting</vh></v>
607+<v t="ekr.20090718092032.10495"><vh>Added support for meta keys</vh></v>
608+<v t="ekr.20090718092032.10496"><vh>Use myLeoSettings when opening leoSettings.leo</vh></v>
609+</v>
610+<v t="ekr.20090718092032.10497"><vh>Plugins</vh>
611+<v t="ekr.20090718092032.10498"><vh>Improved nav_buttons plugin and corresponding nodeHistory class</vh></v>
612+<v t="ekr.20090718092032.10499"><vh>Created qtGui and tkGui plugins</vh></v>
613+<v t="ekr.20090718092032.10500"><vh>Created leoGuiPluginsRef.leo</vh></v>
614+</v>
615+</v>
616+<v t="ekr.20090718092032.10501"><vh>New features in 4.6 b2</vh>
617+<v t="ekr.20090718092032.10502"><vh>Allow Leo to open any file</vh></v>
618+<v t="ekr.20090718092032.10503"><vh>Improved unit testing</vh></v>
619+<v t="ekr.20090718092032.10504"><vh>Leo tests syntax of .py files when saving them</vh></v>
620+<v t="ekr.20090718092032.10505"><vh>Made qt gui the default</vh></v>
621+<v t="ekr.20090718092032.10506"><vh>Support @auto-rst</vh></v>
622+</v>
623+<v t="ekr.20090718092032.10507"><vh>New features in 4.6 final</vh></v>
624+</v>
625+</v>
626+</v>
627+</v>
628 </vnodes>
629 <tnodes>
630 <t tx="EKR.20040518070558">Leo 4.2 alpha 2 May 18, 2004
631@@ -13971,6 +14088,7 @@
632
633 http://leo-editor.googlegroups.com/web/625-leo-window.png?gda=Fjn-hkQAAACaem1_7XPo9S1KnEkCtDqka_lw8qfHa3YHzOgIlt5IjVd5eKdLdCg0nUt3E6wDF75V6u9SiETdg0Q2ffAyHU-dzc4BZkLnSFWX59nr5BxGqA
634 </t>
635+<t tx="ekr.20090711120622.10447"></t>
636 <t tx="ekr.20090712122931.10453"></t>
637 <t tx="ekr.20090717084250.10702"></t>
638 <t tx="ekr.20090717084250.10703"></t>
639@@ -14352,6 +14470,388 @@
640 <t tx="ekr.20090717084250.10908"></t>
641 <t tx="ekr.20090717084250.10909"></t>
642 <t tx="ekr.20090717084250.10910">Leo now warns on dangerous writes to @thin and @file nodes.</t>
643+<t tx="ekr.20090718092032.10405">Leo 4.6.1 final July 18, 2009
644+
645+Leo 4.6.1 final is now available at:
646+http://sourceforge.net/project/showfiles.php?group_id=3458&amp;package_id=29106
647+
648+Leo is a text editor, data organizer, project manager and much more. See:
649+http://webpages.charter.net/edreamleo/intro.html
650+
651+Leo 4.6.1 fixes two bugs in Leo 4.6:
652+
653+- Leo's signon is now printed properly.
654+- Opening a file from the File menu now leaves the new window on top.
655+
656+The highlights of Leo 4.6
657+--------------------------
658+
659+- Cached external files *greatly* reduces the time to load .leo files.
660+- Leo now features a modern Qt interface by default.
661+ Leo's legacy Tk interface can also be used.
662+- New --config, --file and --gui command-line options.
663+- Leo tests syntax of .py files when saving them.
664+- Leo can now open any kind of file into @edit nodes.
665+- @auto-rst nodes allow easy editing of reStructuredText files.
666+- Properties of commanders, positions and nodes simplify programming.
667+- Improved Leo's unit testing framework.
668+- Leo now requires Python 2.5 or later.
669+- Dozens of small improvements and bug fixes.
670+
671+Links:
672+------
673+Leo: http://webpages.charter.net/edreamleo/front.html
674+Forum: http://groups.google.com/group/leo-editor
675+Download: http://sourceforge.net/project/showfiles.php?group_id=3458
676+Bzr: http://code.launchpad.net/leo-editor/
677+Quotes: http://webpages.charter.net/edreamleo/testimonials.html</t>
678+<t tx="ekr.20090718092032.10406"></t>
679+<t tx="ekr.20090718092032.10407"></t>
680+<t tx="ekr.20090718092032.10408">A patch at the start of loadOnePlugin prevents leo from crashing and allows the
681+gui prompt for a leoID to come up.</t>
682+<t tx="ekr.20090718092032.10409">This is reasonable now that old-style file indices are rare.</t>
683+<t tx="ekr.20090718092032.10410">Html files are a good test case.</t>
684+<t tx="ekr.20090718092032.10411"></t>
685+<t tx="ekr.20090718092032.10412">http://bugs.launchpad.net/leo-editor/+bug/376634
686+
687+The fix was to putVnodes.</t>
688+<t tx="ekr.20090718092032.10413"></t>
689+<t tx="ekr.20090718092032.10414">http://bugs.launchpad.net/leo-editor/+bug/383204</t>
690+<t tx="ekr.20090718092032.10415">http://groups.google.com/group/leo-editor/browse_thread/thread/981c27d5c24c90f8</t>
691+<t tx="ekr.20090718092032.10416">The generated @nocolor line now ends with a newline.</t>
692+<t tx="ekr.20090718092032.10417">http://groups.google.com/group/leo-editor/browse_thread/thread/6cab5e676d4d75a0</t>
693+<t tx="ekr.20090718092032.10418">- Removed forceGnxOnPosition from leoImport.py and leoAtFile.py.
694+
695+- readStartNode now always uses root.v for the first node
696+ instead of calling createThinChild4</t>
697+<t tx="ekr.20090718092032.10419">https://bugs.launchpad.net/leo-editor/+bug/367462
698+
699+The expected/customary behaviour (one you get used to in almost every editor) is:
700+
701+End: always move to end of line
702+Home: Move to first visible chararacter on the line. When pressing home again, move to column zero. If Home is pressed one more time, move to first visible character again.
703+
704+This is also the way emacs behaves, though ctrl+a always moves to column zero.</t>
705+<t tx="ekr.20090718092032.10420">The @verbatim was being inserted into the outline.
706+</t>
707+<t tx="ekr.20090718092032.10421"></t>
708+<t tx="ekr.20090718092032.10422"></t>
709+<t tx="ekr.20090718092032.10423">The problem arose when reading a zipped file:
710+
711+ File "C:\Programme\Leo-4-6-b1\leo\core\leoFileCommands.py", line
712+1265, in parse_leo_file
713+ s = theFile.read()
714+TypeError: read() takes at least 2 arguments (1 given)
715+saved: [zipped] Dive-into-Python-3.leo
716+</t>
717+<t tx="ekr.20090718092032.10424">exception loading plugin
718+Traceback (most recent call last):
719+
720+ File "C:\leo.repo\trunk\leo\core\leoPlugins.py", line 429, in loadOnePlugin
721+ loadedModulesFilesDict[moduleName] = g.app.config.enabledPluginsFileName
722+
723+AttributeError: StubConfig instance has no attribute 'enabledPluginsFileName'
724+
725+leoID='ekr'
726+.leoID.txt created in C:\Documents and Settings\HP_Administrator\My Documents\Edward\.leo
727+load </t>
728+<t tx="ekr.20090718092032.10425">http://bugs.launchpad.net/leo-editor/+bug/362048
729+
730+I have 'dabbrev-expands' bound to the F4 key. When I press F4 after
731+the word "freq" in a body pane containing the word "frequency" then
732+Leo 4.5.1 shows a hour-glass for a while before giving an empty
733+dabbrev-expand: prompt in the minibuffer.
734+
735+If I back up one character, putting point between the e and q and then
736+type F4, I get the expected behavior: the word "frequency" is inserted
737+immediately.
738+
739+What I did:
740+
741+- Removed "not ready messages".
742+- Made the code undoable.
743+- Added wimpy unit test.</t>
744+<t tx="ekr.20090718092032.10426"></t>
745+<t tx="ekr.20090718092032.10427">Added call to isFKey in k.handleUnboundKeys.
746+</t>
747+<t tx="ekr.20090718092032.10428">http://bugs.launchpad.net/leo-editor/+bug/376189</t>
748+<t tx="ekr.20090718092032.10429">http://bugs.launchpad.net/leo-editor/+bug/382221
749+</t>
750+<t tx="ekr.20090718092032.10430">http://bugs.launchpad.net/leo-editor/+bug/363403
751+
752+With a long body text you might place the cursor on a line, hold down Shift, and
753+PgDn several pages to select a large block of text. The last PgDn may overshoot
754+the range you want selected, so you should be able to use UpArrow to bring the
755+bottom of the range back up to where you want it. However, on the first UpArrow
756+the selection is lost and restarted from the current cursor position. I.e. you
757+end up with just one line selected, instead of trimming one line of the
758+selection of several pages, as intended.
759+</t>
760+<t tx="ekr.20090718092032.10431">http://bugs.launchpad.net/leo-editor/+bug/306671
761+
762+If a Leo editor window is opened, and the "NewHeadline" node is renamed to
763+"@auto &lt;path to some valid file&gt;", and then the "File-&gt;Read/Write-&gt;Read @auto
764+nodes" menu option is selected, the renamed node reverts to its previous name
765+("NewHeadline"), and nothing is loaded into the node.</t>
766+<t tx="ekr.20090718092032.10432">http://groups.google.com/group/leo-editor/browse_thread/thread/21bddd50f3400bdc?hl=en</t>
767+<t tx="ekr.20090718092032.10433">The outline wasn't being redrawn properly.</t>
768+<t tx="ekr.20090718092032.10434">http://groups.google.com/group/leo-editor/browse_thread/thread/430287018f9d773d
769+
770+The fix to minibufferFind.changeAll fixes a bug that is several years old.
771+The fix to findNextMatch fixes a bug that is likely much older than that.</t>
772+<t tx="ekr.20090718092032.10435"></t>
773+<t tx="ekr.20090718092032.10436"></t>
774+<t tx="ekr.20090718092032.10437">http://mail.google.com/mail/#inbox/11ef0076a3f4d866</t>
775+<t tx="ekr.20090718092032.10438">The crash happened inside the call to::
776+
777+ c.widgetWantsFocusNow(event.widget)
778+
779+in callAltXFunction. Actually, the crash happened later, in c.outerUpdate.
780+
781+A better fix would be to use wrappers for all edit widgets, and recalculate the
782+edit widget any it needs to be used.</t>
783+<t tx="ekr.20090718092032.10439"></t>
784+<t tx="ekr.20090718092032.10440">http://groups.google.com/group/leo-editor/browse_thread/thread/606277d73b193037</t>
785+<t tx="ekr.20090718092032.10441"></t>
786+<t tx="ekr.20090718092032.10442">onTextChanged in the qt gui was calling setUndoTypingParams, in many case
787+redundently and with bad params.
788+
789+It remains to be seen whether onTextChanged is ever needed. If it is, it may be
790+difficult to set the old selection properly.</t>
791+<t tx="ekr.20090718092032.10443">http://bugs.launchpad.net/leo-editor/+bug/353925
792+
793+The "kill-region" function did nothing when using the qt gui.
794+
795+The fix was to replace tag_ranges with w.getSelectionRange, etc.
796+This was the only call to tag_ranges in the core.</t>
797+<t tx="ekr.20090718092032.10444">http://bugs.launchpad.net/leo-editor/+bug/377907
798+
799+I'm going to mark this invalid, although the behavior is way too confusing.
800+
801+I added the following to the plugin's docstring:
802+
803+Configuration
804+~~~~~~~~~~~~~
805+
806+At present, the file leo/plugins/leo_to_html.ini contains configuration settings.
807+In particular, the default export path, "c:\" must be changed for *nix systems.
808+</t>
809+<t tx="ekr.20090718092032.10445">The problem is imports in the Commands ctor. When executed the first time from
810+the bridge the imports take about 3/4 sec. on my machine. There is nothing that
811+can or should be done. Ctrl-5 is still hugely faster than opening unitTest.leo!</t>
812+<t tx="ekr.20090718092032.10446"></t>
813+<t tx="ekr.20090718092032.10447"></t>
814+<t tx="ekr.20090718092032.10448"></t>
815+<t tx="ekr.20090718092032.10449">http://groups.google.com/group/leo-editor/browse_thread/thread/a04dcefbb672078f</t>
816+<t tx="ekr.20090718092032.10450"></t>
817+<t tx="ekr.20090718092032.10451"></t>
818+<t tx="ekr.20090718092032.10452"></t>
819+<t tx="ekr.20090718092032.10453"></t>
820+<t tx="ekr.20090718092032.10454">The code should save/restore, just as in the clean_file function (from scripts.leo)</t>
821+<t tx="ekr.20090718092032.10455">The problem was missing calls to initAfterLoad in c.new.</t>
822+<t tx="ekr.20090718092032.10456">http://groups.google.com/group/leo-editor/browse_thread/thread/f27e3514310a5c90</t>
823+<t tx="ekr.20090718092032.10457"></t>
824+<t tx="ekr.20090718092032.10458"></t>
825+<t tx="ekr.20090718092032.10459">Pulled trunk, got r1599
826+
827+python launchLeo.py leo/plugins/leoPlugins.leo
828+
829+go to
830+
831+Plugins--&gt;Graph world--&gt;@shadow backlink.py--&gt;backlink declarations
832+
833+All I did was add the full stop at the end of the docstring, but see
834+the diff:
835+
836+=== modified file 'leo/plugins/backlink.py'
837+--- leo/plugins/backlink.py 2009-02-19 18:16:01 +0000
838++++ leo/plugins/backlink.py 2009-02-25 22:14:46 +0000
839+@@ -1,4 +1,4 @@
840+-'''Backlink - allow arbitrary links between nodes
841++'''Backlink - allow arbitrary links between nodes.
842+ '''
843+
844+ # Notes
845+@@ -296,7 +296,7 @@
846+ break
847+ else:
848+ self.showMessage("Error: no such link")
849+-
850++
851+ gcc = getattr(self.c, 'graphcanvasController')
852+ if gcc:
853+ gcc.update()
854+</t>
855+<t tx="ekr.20090718092032.10460">http://groups.google.com/group/leo-editor/browse_thread/thread/7d8325d055cbef30</t>
856+<t tx="ekr.20090718092032.10461">http://groups.google.com/group/leo-editor/browse_thread/thread/5f5219fedd977ec2
857+</t>
858+<t tx="ekr.20090718092032.10462">http://groups.google.com/group/leo-editor/browse_thread/thread/414137b93c7e4b90
859+
860+Calls g.makeAllNonExistentDirectories instead of os.mkdir.</t>
861+<t tx="ekr.20090718092032.10463">http://groups.google.com/group/leo-editor/browse_thread/thread/707a910f975f3715
862+
863+http://groups.google.com/group/leo-editor/browse_thread/thread/74c6ab4809bde980
864+
865+There were two separate bugs:
866+
867+1. The eol_span and eol_span_regex now honor the mode's escape character.
868+
869+2. colorRangeWithTag now colors delegates with the default tag color.
870+
871+No changes were made in modes/c.py or modes/c.xml.</t>
872+<t tx="ekr.20090718092032.10464"></t>
873+<t tx="ekr.20090718092032.10465"></t>
874+<t tx="ekr.20090718092032.10466"></t>
875+<t tx="ekr.20090718092032.10467">http://groups.google.com/group/leo-editor/browse_thread/thread/d6449236bc140713#
876+
877+Added support for @string default_leo_file = ~/.leo/workbook.leo</t>
878+<t tx="ekr.20090718092032.10468">@string underindent-escape-string = \-</t>
879+<t tx="ekr.20090718092032.10469">http://groups.google.com/group/leo-editor/browse_thread/thread/c80fd8375534afdf</t>
880+<t tx="ekr.20090718092032.10470"></t>
881+<t tx="ekr.20090718092032.10471">@nocolor
882+
883+http://groups.google.com/group/leo-editor/browse_thread/thread/4ad91984a6d0acac
884+
885+&gt; As I said, all I need would be is for leo to call callback/hook with
886+&gt; signature like
887+&gt; def complete(line-up-to-cursor, current_node) =&gt; list of strings
888+
889+The actual signature is:
890+
891+theObject,completionList = getExternalCompletions (self,s,p=None,language='python')
892+
893+p is used only to get the language, or you can set the language by hand.
894+
895+@color</t>
896+<t tx="ekr.20090718092032.10472"></t>
897+<t tx="ekr.20090718092032.10473">c.config.doEnabledPlugins sets g.app.config.enabledPluginsFileName</t>
898+<t tx="ekr.20090718092032.10474">p.b, p.h and p.gnx
899+t.b, t.h, t.gnx and t.u
900+v.b, v.h, v.gnx, and v.u</t>
901+<t tx="ekr.20090718092032.10475"></t>
902+<t tx="ekr.20090718092032.10476">c.config.getSettingSource('show_full_tracebacks_in_scripts')
903+returns the name of the file which Leo used to determine the setting
904+
905+- D indicates default settings.
906+- F indicates the file being loaded
907+- L indicates leoSettings.leo
908+- M indicates myLeoSettings.leo</t>
909+<t tx="ekr.20090718092032.10477"></t>
910+<t tx="ekr.20090718092032.10478">http://groups.google.com/group/leo-editor/browse_thread/thread/3b5f1232ecc6bba7</t>
911+<t tx="ekr.20090718092032.10479"></t>
912+<t tx="ekr.20090718092032.10480">@nocolor
913+
914+The setting is called -c or --config. The one-config-file arg no longer exists.
915+
916+http://groups.google.com/group/leo-editor/browse_thread/thread/f3f95d93bcd93b94
917+
918+Personally, I'd like to see another config file available via -c on
919+the command line:
920+(a common idiom)
921+
922+leo myproject.leo -c /usr/lib/myproject/myLeoSettings.leo
923+
924+or better yet:
925+
926+leo myproject.leo -c /etc/leo/style01.leo
927+leo myotherproject.leo -c /etc/leo/style02.leo
928+leo anotherproject.leo -c /etc/leo/style23.leo
929+
930+Each file opens in an editor with the shortcuts, buttons, commands,
931+plugins, appearance etc. that has been tuned for that data management task.
932+
933+or best yet:
934+
935+leo myproject.leo -c /usr/lib/python2.5/site-packages/leo/config/style94.leo
936+
937+==================
938+
939+http://groups.google.com/group/leo-editor/browse_thread/thread/b5a736089079acaf#
940+
941+Please, I think each file has a distinct and required role.
942+
943+- config/leoSettings.leo = Edward's base, required for a sane starting point
944+
945+- home/.leo/myLeoSettings.leo = adjust Edwards suggestions to taste
946+
947+- cwd/myLeoSettings.leo = provide a customized working environment in
948+this folder
949+
950+- leo -c /usr/lib/leo-editor/src/config/zope3_ide.leo =
951+ - open this file in a specialized environments, mine or community contributed
952+ - ...
953+
954+- currentfile/@settings =
955+ - I'm working on some customization ideas
956+ - Here, try out this Leo file I sent you, check out all the spiffy
957+modifications
958+
959+@color</t>
960+<t tx="ekr.20090718092032.10481">Only .zip and .leo extensions are allowed at present.</t>
961+<t tx="ekr.20090718092032.10482"></t>
962+<t tx="ekr.20090718092032.10483"></t>
963+<t tx="ekr.20090718092032.10484"></t>
964+<t tx="ekr.20090718092032.10485">http://groups.google.com/group/leo-editor/browse_thread/thread/3417ff5e9c02c626
965+
966+The open file dialog now shows all files by default.
967+Selecting a non-.leo file will load that file into a new node in the present outline.
968+
969+This plugs what may have been the biggest hole in Leo's history.
970+</t>
971+<t tx="ekr.20090718092032.10486">This works, but stops Leo in the middle of the command-handling logic.
972+
973+However, it is possible to pick up the commander by stepping out into
974+k.masterKeyHandler or k.masterCommandHandler. Using c, one can then get all
975+other info.</t>
976+<t tx="ekr.20090718092032.10487">- Tab = indent when there is a text selection
977+- Shift-Tab unindents always</t>
978+<t tx="ekr.20090718092032.10488">Escape now ends isearch
979+</t>
980+<t tx="ekr.20090718092032.10489"></t>
981+<t tx="ekr.20090718092032.10490"># Useful: we don't need a closing @color to enable coloring in descendants.</t>
982+<t tx="ekr.20090718092032.10491"></t>
983+<t tx="ekr.20090718092032.10492"></t>
984+<t tx="ekr.20090718092032.10493">http://groups.google.com/group/leo-editor/browse_thread/thread/f1c7c5134b95c77e
985+</t>
986+<t tx="ekr.20090718092032.10494"></t>
987+<t tx="ekr.20090718092032.10495">http://groups.google.com/group/leo-editor/browse_thread/thread/b6a39ed672a28c65?pli=1</t>
988+<t tx="ekr.20090718092032.10496">Changed config.get so that settings in leoSettings.leo are read *last*.
989+This means that myLeoSettings.leo will override leoSettings.leo,
990+even when leoSettings.leo is the local file.</t>
991+<t tx="ekr.20090718092032.10497"></t>
992+<t tx="ekr.20090718092032.10498"></t>
993+<t tx="ekr.20090718092032.10499"></t>
994+<t tx="ekr.20090718092032.10500">This contains all gui plugins.</t>
995+<t tx="ekr.20090718092032.10501"></t>
996+<t tx="ekr.20090718092032.10502">Leo can now open, for example, any .py file.
997+It will be put in an @edit node in an otherwise-empty outline.
998+
999+This allows Leo to be associated with the edit action of .py files.
1000+Something like this::
1001+
1002+C:\Python26\python.exe "c:\leo.repo\trunk\launchLeo.py" --gui=qt %1 %2</t>
1003+<t tx="ekr.20090718092032.10503">- leoDynamicTest.py now supports a --path argument giving the .leo file.
1004+ This is so useful!
1005+
1006+- leoDynamicTest.py now honors the --silent argument.
1007+
1008+- leoTest.runUnitTestLeoFile runs all unit tests in a given .leo file
1009+ in a separate process.
1010+
1011+- leoTest.runTestsExternally calls runUnitTestLeoFile after creating
1012+ dynamicUnitTest.leo.
1013+
1014+- When reporting that no unit tests were found, all unit tests commands tell
1015+ whether the entire outline or just the selected outline was searched.
1016+ This fixes sometimes-misleading error messages.
1017+
1018+- test.leo contains a 'run-test.leo-tests' button.
1019+
1020+- leoPy.leo contains a 'run-all-core-tests' button.</t>
1021+<t tx="ekr.20090718092032.10504"></t>
1022+<t tx="ekr.20090718092032.10505"></t>
1023+<t tx="ekr.20090718092032.10506"></t>
1024+<t tx="ekr.20090718092032.10507">Leo now warns on dangerous writes to @thin and @file nodes.</t>
1025 <t tx="ville.20090520232034.6345">g.app.gui.runScrolledMessageDialog(c=c, msg = u'rst:' + p.b)</t>
1026 <t tx="ville.20090705224948.5734">import os
1027 pos = c.find_h("@thin leoUserGuide.txt")[0]
1028
1029=== modified file 'leo/doc/PKG-INFO.TXT'
1030--- leo/doc/PKG-INFO.TXT 2009-07-09 14:33:18 +0000
1031+++ leo/doc/PKG-INFO.TXT 2009-07-18 14:35:31 +0000
1032@@ -1,6 +1,6 @@
1033 Metadata-Version: 1.0
1034 Name: leo
1035-Version: 4.6-rc1
1036+Version: 4.6.1-final
1037 Summary: Leo: Literate Editor with Outlines
1038 Home-page: http://webpages.charter.net/edreamleo/front.html
1039 Author: Edward K. Ream
1040
1041=== modified file 'leo/doc/README.TXT'
1042--- leo/doc/README.TXT 2009-07-10 19:07:58 +0000
1043+++ leo/doc/README.TXT 2009-07-18 14:35:31 +0000
1044@@ -1,12 +1,17 @@
1045-Leo 4.6 release candidate 1 July 9, 2009
1046+Leo 4.6.1 final July 18, 2009
1047
1048-Leo 4.6 rc1 is now available at:
1049+Leo 4.6.1 final is now available at:
1050 http://sourceforge.net/project/showfiles.php?group_id=3458&package_id=29106
1051
1052 Leo is a text editor, data organizer, project manager and much more. See:
1053 http://webpages.charter.net/edreamleo/intro.html
1054
1055-The highlights of Leo 4.6:
1056+Leo 4.6.1 fixes two bugs in Leo 4.6:
1057+
1058+- Leo's signon is now printed properly.
1059+- Opening a file from the File menu now leaves the new window on top.
1060+
1061+The highlights of Leo 4.6
1062 --------------------------
1063
1064 - Cached external files *greatly* reduces the time to load .leo files.
1065
1066=== modified file 'leo/plugins/nav_qt.py'
1067--- leo/plugins/nav_qt.py 2009-06-29 13:16:25 +0000
1068+++ leo/plugins/nav_qt.py 2009-07-24 21:00:30 +0000
1069@@ -88,15 +88,15 @@
1070 #@+node:ville.20090518182905.7867:clickPrev
1071 def clickPrev(self):
1072 c = self.c
1073- p = c.nodeHistory.goPrev()
1074+ p = c.goPrevVisitedNode()
1075 # g.trace(p)
1076- if p: c.selectPosition(p)
1077+ #if p: c.selectPosition(p)
1078
1079 #@-node:ville.20090518182905.7867:clickPrev
1080 #@+node:ville.20090518182905.7868:clickNext
1081 def clickNext(self):
1082 c = self.c
1083- p = c.nodeHistory.goNext()
1084+ p = c.goNextVisitedNode()
1085 # g.trace(p)
1086 if p: c.selectPosition(p)
1087 #@-node:ville.20090518182905.7868:clickNext
1088
1089=== modified file 'leo/plugins/plugins_menu.py'
1090--- leo/plugins/plugins_menu.py 2009-06-19 13:56:12 +0000
1091+++ leo/plugins/plugins_menu.py 2009-07-22 15:16:22 +0000
1092@@ -476,6 +476,7 @@
1093 def properties(self, event=None):
1094 """Display a modal properties dialog for this plugin"""
1095
1096+ if g.app.gui.guiName() != 'tkinter': return
1097
1098 if self.hasapply:
1099
1100
1101=== modified file 'leo/plugins/qtGui.py'
1102--- leo/plugins/qtGui.py 2009-07-18 13:46:03 +0000
1103+++ leo/plugins/qtGui.py 2009-07-24 15:35:43 +0000
1104@@ -7557,7 +7557,7 @@
1105 self.flag = True # Per-node enable/disable flag.
1106 self.killColorFlag = False
1107 self.language = 'python' # set by scanColorDirectives.
1108- self.max_chars_to_colorize = 10000
1109+ self.max_chars_to_colorize = c.config.getInt('qt_max_colorized_chars') or 0
1110
1111 # Step 2: create the highlighter.
1112 self.highlighter = leoQtSyntaxHighlighter(c,w,colorizer=self)
1113@@ -7577,7 +7577,7 @@
1114
1115 self.count += 1 # For unit testing.
1116
1117- if len(p.b) > self.max_chars_to_colorize:
1118+ if len(p.b) > self.max_chars_to_colorize > 0:
1119 self.flag = False
1120 elif self.enabled:
1121 oldLanguage = self.language
1122@@ -7691,7 +7691,7 @@
1123 trace = False and not g.unitTesting
1124 p = p.copy()
1125
1126- if len(p.b) > self.max_chars_to_colorize:
1127+ if len(p.b) > self.max_chars_to_colorize > 0:
1128 self.flag = False
1129 else:
1130 # self.flag is True unless an unambiguous @nocolor is seen.
1131
1132=== modified file 'leo/test/unitTest.leo'
1133--- leo/test/unitTest.leo 2009-07-04 15:46:03 +0000
1134+++ leo/test/unitTest.leo 2009-07-25 11:19:51 +0000
1135@@ -3,7 +3,7 @@
1136 <leo_file>
1137 <leo_header file_format="2" tnodes="0" max_tnode_index="0" clone_windows="0"/>
1138 <globals body_outline_ratio="0.5">
1139- <global_window_position top="117" left="488" height="822" width="783"/>
1140+ <global_window_position top="97" left="341" height="839" width="1133"/>
1141 <global_log_window_position top="0" left="0" height="0" width="0"/>
1142 </globals>
1143 <preferences/>
1144@@ -2077,7 +2077,7 @@
1145 </v>
1146 <v t="ekr.20040712101754.182"></v>
1147 </v>
1148-<v t="ekr.20040712101754.187" annotate="7d71002e"><vh> Position tests</vh>
1149+<v t="ekr.20040712101754.187" a="E" annotate="7d71002e"><vh> Position tests</vh>
1150 <v t="ekr.20080418101332.1"><vh> Diabled tests</vh>
1151 <v t="ekr.20040712101754.184"><vh>@@test consistency of p.v.t.vnodeList &amp; v.parents for cloned nodes</vh></v>
1152 <v t="ekr.20040712101754.208" annotate="7d71002e"><vh>@@test consistency of tnodeListAndParents</vh></v>
1153@@ -17411,6 +17411,12 @@
1154 <t tx="ekr.20090102061858.2">child = p.insertAsLastChild()
1155 assert c.positionExists(child)
1156 child.doDelete()
1157+assert not c.positionExists(child)
1158+
1159+# also check the same on root level
1160+child = c.rootPosition().insertAfter()
1161+assert c.positionExists(child)
1162+child.doDelete()
1163 assert not c.positionExists(child)</t>
1164 <t tx="ekr.20090102062037.2">root = c.rootPosition()
1165

Subscribers

People subscribed via source and target branches

to status/vote changes: