aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/tlib_vim/CHANGES.TXT
blob: 84357bf0a8dc5df1614e614a1389d1fb5796839e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
0.1
Initial release

0.2
- More list convenience functions
- tlib#EditList()
- tlib#InputList(): properly handle duplicate items; it type contains 
'i', the list index + 1 is returned, not the element

0.3
- tlib#InputList(): Show feedback in statusline instead of the echo area
- tlib#GetVar(), tlib#GetValue()

0.4
- tlib#InputList(): Up/Down keys wrap around list
- tlib#InputList(): FIX: Problem when reducing the filter & using AND
- tlib#InputList(): Made <a-numeric> work (can be configured via 
- tlib#InputList(): special display_format: "filename"
- tlib#Object: experimental support for some kind of OOP
- tlib#World: Extracted some functions from tlib.vim to tlib/World.vim
- tlib#FileJoin(), tlib#FileSplit(), tlib#RelativeFilename()
- tlib#Let()
- tlib#EnsureDirectoryExists(dir)
- tlib#DirName(dir)
- tlib#DecodeURL(url), tlib#EncodeChar(char), tlib#EncodeURL(url)
- FIX: Problem when using shift-up/down with filtered lists

0.5
- tlib#InputList(): FIX: Selecting items in filtered view
- tlib#InputList(): <c-bs>: Remove last AND pattern from filter

0.6
- tlib#InputList(): Disabled <c-space> map
- tlib#InputList(): try to be smart about user itentions only if a 
list's length is < g:tlib_sortprefs_threshold (default: 200)
- tlib#Object: Super() method
- tlib#MyRuntimeDir()
- tlib#GetCacheName(), tlib#CacheSave(), tlib#CacheGet()
- tlib#Args(), tlib#GetArg()
- FIX: tlib#InputList(): Display problem with first item

0.7
- tlib#InputList(): <c-z> ... Suspend/Resume input
- tlib#InputList(): <c-q> ... Input text on the command line (useful on 
slow systems when working with very large lists)
- tlib#InputList(): AND-pattern starting with '!' will work as 'exclude 
matches'
- tlib#InputList(): FIX <c-bs> pop OR-patterns properly
- tlib#InputList(): display_format == filename: don't add '/' to 
directory names (avoid filesystem access)

0.8
- FIX: Return empty cache name for buffers that have no files attached to it
- Some re-arranging

0.9
- Re-arrangements & modularization (this means many function names have 
changed, on the other hand only those functions are loaded that are 
actually needed)
- tlib#input#List(): Added maps with m-modifiers for <c-q>, <c-z>, <c-a>
- tlib#input#List(): Make sure &fdm is manual
- tlib#input#List(): When exiting the list view, consume the next 5 
characters in the queue (if any)
- tlib#input#EditList(): Now has cut, copy, paste functionality.
- Added documentation and examples

0.10
- tlib#input#List(): (v)split type of commands leave the original window 
untouched (you may use <c-w> to replace its contents)
- tlib#file#With(): Check whether an existing buffer is loaded.
- Scratch related functions went to tlib/scratch.vim so that they are 
accessible from other scripts.
- Configure the list window height via g:tlib_inputlist_pct (1..100%)

0.11
NEW:
    - The :TLet command replaces :TLLet (which was removed)
    - :TScratch[!] command (with ! don't split but use the whole window)
    - tlib#rx#Escape(text, ?magic='m')
    - tlib#buffer#GetList(?show_hidden=0)
    - tlib#dir#CD(), tlib#dir#Push(), tlib#dir#Pop()
    - tlib#input#ListW: A slightly remodeled version of tlib#input#List 
    that takes a World as second argument.
    - Added some documentation doc/tlib.txt (most of it is automatically 
    compiled from the source files)
CHANGES:
    - tlib#input#List(): The default keys for AND, NOT have changed to 
    be more Google-like (space, minus); the keys can be configured via 
    global variables.
IMPROVEMENTS:
    - In file listings, indicate if a file is loaded, listed, modified 
    etc.
    - tlib#input#List(): Highlight the filter pattern
    - tlib#input#List(): <c-up/down> scrolls g:tlib_scroll_lines 
    (default=10) lines
FIXES:
    - tlib#input#List(): Centering line, clear match, clear & restore 
    the search register
    - tlib#input#List(): Ensure the window layout doesn't change (if the 
    number of windows hasn't changed)
    - tlib#arg#Ex(): Don't escape backslashes by default

0.12
NEW:
    - tlib/tab.vim
CHANGES:
    - Renamed tlib#win#SetWin() to tlib#win#Set()
IMPROVEMENTS:
    - tlib#input#List(): <left>, <right> keys work in some lists
    - tlib#input#List(): If an index_table is provided this will be used 
    instead of the item's list index.
FIXES:
    - tlib#input#List(): Problem with scrolling, when the list was 
    shorter than the window (eg when using a vertical window).
    - tlib#cache#Filename(): Don't rewrite name as relative filename if 
    explicitly given as argument. Avoid double (back)slashes.
    - TLet: simplified

0.13
CHANGES:
    - Scratch: Set &fdc=0.
    - The cache directory can be configured via g:tlib_cache
    - Renamed tlib#buffer#SetBuffer() to tlib#buffer#Set().
FIXES:
    - tlib#input#List(): Select the active item per mouse.
    - TLet: simplified

0.14
NEW:
    - tlib#buffer#InsertText()
CHANGES:
    - tlib#win#[SG]etLayout(): Use a dictionnary, set &cmdheight.
FIXES:
    - Wrong order with pre-defined filters.

0.15
NEW:
    - tlib#string#TrimLeft(), tlib#string#TrimRight(), tlib#string#Strip()
    - Progress bar

0.16
NEW:
    - tlib#string#Printf1()

0.17
NEW:
    - TBrowseOutput
- Some minor changes

0.18
NEW:
    - tlib/time.vim
    - g:tlib_inputlist_livesearch_threshold
CHANGES:
    - tlib#input#ListD(), World: Don't redisplay the list while typing 
    new letters; calculate filter regexps only once before filtering the 
    list.
    - World.vim: Minor changes to how filenames are handled.

0.19
NEW:
    - tag.vim
FIX:
    - dir.vim: Use plain dir name in tlib#dir#Ensure()
    - tlib#input#List(): An initial filter argument creates [[filter]] 
    and not as before [[''], [filter]].
    - tlib#input#List(): When type was "si" and the item was picked by 
    filter, the wrong index was returned.
    - tlib#input#List(): Don't check if chars are typed when displaying 
    the list for the first time.

0.20
- The arguments of tlib#tag#Collect() have changed.
- tlib#input#List(): The view can be "suspended" on initial display.
- tlib#input#List(): Follow/trace cursor functionality

0.21
- tlib#buffer#InsertText(): Respect tabs and (experimental) formatoptions+=or
- tlib/syntax.vim: Syntax-related functions

0.22
- FIX: very magic mode for tlib#rx#Escape() (thanks A Politz)
- FIX: tlib#arg#Ex: escape "!"

0.23
- Respect the setting of g:tlib_inputlist_filename_indicators
- tlib#input#List(): Reset syntax on resume; option to make list window "sticky"
- tlib#agent#ToggleStickyList()
- Simplified tlib#url#Decode()
- tlib#arg#Ex(): use fnameescape() if available

0.24
- s:prototype.SetInitialFilter: accept list as argument
- Maintain buffer MRU if required

0.25
- NEW: tlib#notify#TrimMessage(): trim message to prevent "Press ENTER" 
messages (contributed by Erik Falor)
- NEW: tlib#notify#Echo()
- FIX: World.CloseScratch(): Set window
- FIX: tlib#input#ListW(): Set initial_display = 1 on reset

0.26
- NEW: tlib#normal#WithRegister()
- FIX: Try not to change numbered registers

0.27
- FIX: Cosmetic bug, wrong packaging (thanks Nathan Neff)
- Meaning of World#filter_format changed; new World#filter_options 
- Filtering didn't work as advertised
- tlib#string#Count()

0.28
- tlib#input#List():
-- Improved handling of sticky lists; <cr> and <Leftmouse> resume a 
suspended list and immediately selects the item under the cursor
-- Experimental "seq" matching style: the conjunctions are sequentially 
ordered, they are combined with "OR" (disjunctions), the regexp is 
'magic', and "." is expanded to '.\{-}'
-- Experimental "cnfd" matching style: Same as cnf but with an "elastic" 
dot "." that matches '\.\{-}'
-- Filtering acts as if &ic=1 && $sc=1
-- Weighting is done by the filter
- tlib#agent#Input(): Consume <esc> when aborting input()
- INCOMPATIBLE CHANGE: Changed eligible values of g:tlib_inputlist_match 
to "cnf", "cnfd", "seq" and "fuzzy"
- NEW: tlib#buffer#KeepCursorPosition()
- tlib#buffer#InsertText(): Take care of the extra line when appending 
text to an empty buffer.

0.29
- tlib#string#Strip(): Strip also control characters (newlines etc.)
- tlib#rx#Suffixes(): 'suffixes' as Regexp
- World#RestoreOrigin(): Don't assume &splitbelow

0.30
- World#RestoreOrigin(): Don't assume &splitright

0.31
- :TRequire command
-tlib#input#List: For i-type list views, make sure agents are called 
with the base indices.

0.32
- tlib#agent#Exit: explicitly return empty value (as a consequence, 
pressing <esc> when browsing an index-list, returns 0 and not "")
- tlib#signs
- tlib#input#List: set local statusline

0.33
- Don't reset statusline
- Don't use fnamemodify() to split filenames (for performance reasons)
- scratch: Set ft after setting up scratch options
- tlib#map#PumAccept(key)

0.34
- tlib#buffer#HighlightLine(line): call tlib#autocmdgroup#Init() 
(reported by Sergey Khorev)

0.35
- tlib#input#EditList(): return the list if the user presses esc

0.36
- Display a message when the filter is for whatever reason invalid
- Removed tlib#paragraph#Delete()
- New: tlib#paragraph#Define(), tlib#textobjects#StandardParagraph()
- Try to speed up list display (a rewrite of World.DisplayList() etc. is 
required)

0.37
- g:tlib_inputlist_livesearch_threshold defaults to 1000
- tlib#World: optional scratch_pos field
- tlib#input#List: By default <m-NUMBER> selects by number but NUMBER is 
interpreted as string
- tlib#date
- TTimeCommand

0.38
- tlib#World#Resize: set winfix{height|width}

0.39
- g:tlib#cache#dont_purge
- tlib#vim#RestoreWindow()
- tlib#ballon#...()

0.40
- tlib#agent#ViewFile: Use split/sbuffer if nohidden && modified 
- tlib#buffer#GetList(): order by "basename"

version: "0.41"
  - World.UseScratch(): keepalt
  - Really include balloon.vim
  MD5 checksum: 3fcbc4f7556f5378d39622e62ab8f379

version: "0.42"
  - tlib#input#List: <s-space> inserts a *-like wildcard (represented as "__")
  - Check if a cache file cannot be created because a directory of the same name exists (display a message if so)
  - tlib#cache#Filename: Removed check if a directory of the same name exists (due to inconsistent use)
  - Minor improvements related to buffer handling (scratch_split)
  - .gitignore
  - docs (thanks to blueyed)
  - There is no "edit" answer possibility.
  - Fix first purge: do nothing if no timestamp file.
  - g:tlib_pick_single_item
  - Removed pick_single_item. Changed the default behavour when a list has only 1 item. See doc for g:tlib_pick_last_item.
  - Updated help for tlib#input#List(); help_extra attribute
  - EXPERIMENTAL: cache_var, restore_from_cache, on_leave properties; #Initialize(), #Leave()
  - added tlib#cmd#BrowseOutputWithCallback function and :TBrowseScriptnames command
  - tlib#cmd#BrowseOutputWithCallback function and :TBrowseScriptnames command documentation
  - s:prototype.Initialize(): unlet self.cache_var after restoring values
  - tlib#input#List: filter-specific help
  - Removed the seq filter (use cnfd or fuzzy instead)
  - tlib#input#List: temp_prompt (for help message)
  MD5 checksum: aa8b5a4602235cc1a5bc9ee45d801b81

version: "0.42"
  - g:tlib#cache#silent: don't display messages when purging the cache (fixes #9)
  - Changed message when deleting directories in the cache.
  - g:tlib#input#use_popup: Don't rely on has('menu') but also check for gtk & win gui (fixes #10)
  - debug
  - tlib#input#ListW(): Didn't return a list when type == "m"
  - docs (solves #11)
  MD5 checksum: aa8b5a4602235cc1a5bc9ee45d801b81

version: "0.45"
  - fuzzy mode: prototype.highlight defaults to g:tlib_inputlist_higroup
  - tlib#scratch: Use noautocmd
  - tlib#input#ListW(): Use world.RestoreOrigin() instead of tlib#win#SetLayout(world.winview)
  - tlib#input#ListW(): Revert to tlib#win#SetLayout(world.winview)
  - tlib#cmd#OutputAsList(): Also save output in g:tlib#cmd#last_output
  - tlib#agent#Suspend(): Resume on BufEnter
  - tlib#input#Resume(): Make sure we are in the right buffer
  - tlib#agent#Suspend(): Use only BufEnter event to trigger a Resume
  - tlib#input#ListW(): When redisplaying a list, make sure prefix > 0
  - tlib#vcs: Access vcs (initially only git is supported)
  - tlib#vcs: improved
  - tlib#persistent: Persistent data file names
  - tlib#file#With(): Trigger BufRead autocommands
  - Duplicate help tags (fixes #13)
  - Make sure scrolloff is 0 while viewing the list (fixes https://github.com/tomtom/vikitasks_vim/issues/2)
  MD5 checksum: 0af19ebc0e424727a598a988fdc90f4e

  - Support for tinykeymap (move paragraph)
  - Moved para_move to autoload/tinykeymap/map
  - tlib#vcs: some "diff" commands were defined as "ls"; updated hg def; %s is optional
  MD5 checksum: f2f2fe0893e75bb9423c1ddcd01f38f6
version: "0.46"

  - tlib#input#List: optimizations
  - Prepare for multi-mode maps
  - tlib#input#List: cnfx is new default filter
  - Filters: minor changes to how the pattern is displayed
  - g:tlib#input#format_filename: alternative method for formatting filenames
  - tlib#input#List: allow multiple keymaps / modes
  - Handle rezise events
  - Don't initialize the same window twice
  - Minor optimizations to how help is displayed
  - Handle VimResize event per buffer
  - Improve display of filenames & highlighting
  - Filename highlighter: set Highlight_filename()
  - RunStateHandlers(): set world variable
  - Optimize help display
  MD5 checksum: e3652927722bdc51935eb1a04238546b
version: "1.00"

  - Set g:tlib_inputlist_and to  ' ' again
  - g:tlib#input#filename_max_width: maximum display width of filenames
  - tlib#input#List: <s-esc>, <f10>: run command by name
  MD5 checksum: a42f90275cdbe9f7d92cac61b884a2d1
version: "1.01"

  - #UseInputListScratch(): Make sure the TLib autogroup was created (fixes #14)
  MD5 checksum: 5a6da7fc99c7fc7584e8fc2f7bf86fe4
version: "1.02"

  - tlib#cache#Value(cfile, generator, ftime, ...): cache value & check timestamp
  - Replaced g:tlib#cache#silent with g:tlib#cache#verbosity
  - FormatFilenames: improved handling of utf8 characters
  - tlib#persistent#Value()
  - tlib#input#List: Allow filename indiactors defined by the caller
  - Custom filename_indicators are displayed after (and clearly separted from) the standard indicators
  - Check the return value of an unknown_key agent
  - Format filename = "l": Allow ".." as start of a directory name
  - Format filename = "l": If the filename is just a filename's tail, display it on both sides
  - Set g:tlib_filename_sep to "\" on Windows (again)
  - g:tlib#cache#max_filename: If the cache filename is longer than N characters, use |pathshorten()|.
  MD5 checksum: b64ce6764f39f40bfc95f3916bbb0057
version: "1.04"

version: "1.05"
  - tlib#hash: Adler32 & CRC32 (using zlib via ruby) algorithms
  - tlib#cache#Filename(): If the cache filename is too long, add the Adler32 checksum to the shortened path
  - tlib#cache#Filename(): Use tlib#hash#Adler32() only if the or() function exists
  - tlib#hash#Adler32(): Raise error, if or() doesn't exist
  - tlib#hash#CRC32(): Alternative implementation of crc32 (doesn't work yet, thus currently disabled)
  - tlib#bitwise: Bitwise operations for older versions of vim
  - tlib#number: Base conversion
  - tlib#input#ListW(): Handle mouse clicks more correctly
  - tlib#bitwise#Num2Bits(): Supports returning floats
  - tlib#hash#CRC32(): Alternative implementation of crc32 (doesn't work yet)
  - tlib#hash#CRC32(): Re-enable ruby version
  - tlib#hash#CRC32B(): Implementation of CRC32B checksum in vimscript (used only if +ruby isn't available)
  - tlib#hash#CRC32B(): vim version: cache the crc table
  - tlib#cache#Filename(): Use tlib#hash#CRC32B(file) instead of not Adler32 for filenames too long
  - tlib#hash#CRC32B(): ruby version: return upper case hex value
  - g:tlib#hash#use_crc32: define which crc32b version should be used
  - Moved spec files from vimtlib to tlib_vim
  - tlib#bitwise#Add() and tlib#bitwise#Sub()
  - tlib#file#Relative(): Wrong results for filenames that don't exist
  - Implementation of hash#Adler32 for earlier vim versions; g:tlib#hash#use_adler32
  - tlib#cache#Filename(): Use adler32 again
  - addon-info
  - tlib#file#Absolute(): remove redundant "." parts in full filename
  - win32: Fix moving window when using :vertical for tlib#inpu#List()
  - tlib#cache#Filename(): Don't create wrong directory if the cache filename is too long
  - tlib#file#Join(): if strip_slashes, also strip redundant (back)slashes
  - tlib#input#ListW(): Always set post_keys variable
  - tlib#file#With(): escape backslashes
  - tlib#cmd#OutputAsList(): Support for nesting
  - tlib#dir#NativeName(dirname)
  MD5 checksum: 493f9beca44374de386f20d1613155e3

  - Rename g:tlib_debug to g:tlib#debug
  - Renamed g:tlib_sortprefs_threshold to g:tlib#input#sortprefs_threshold
  - Renamed g:tlib#input#livesearch_threshold
  - Renamed g:tlib_inputlist_match to g:tlib#input#filter_mode
  - Renamed g:tlib_inputlist_higroup to g:tlib#input#higroup
  - Renamed g:tlib#debug
  - Moved g:tlib_pick_last_item
  - Renamed g:tlib#input#and, g:tlib#input#or, g:tlib#input#not
  - Moved g:tlib_numeric_chars to autoload/tlib/input.vim
  - Renamed g:tlib#input#keyagents_InputList_s, g:tlib#input#keyagents_InputList_m, g:tlib#input#handlers_EditList
  - Moved g:tlib_inputlist_pct, g:tlib_inputlist_width_filename, g:tlib_inputlist_filename_indicators, g:tlib_inputlist_shortmessage to autoload/tlib/World.vim
  - Renamed tlib#input#pick_last_item (2)
  - prototype.SelectItemsByNames()
  - filtered_items: Restricted view
  - prototype.PrintLines()
  - Restricted view (2)
  - Moved g:tlib_scroll_lines to autoload/tlib/agent.vim
  - prototype.PrintLines() (2)
  - tlib#input: Improved handling of popup menu (allows submenu)
  - tlib#input: Allow mods in keys
  - Moved g:tlib_scratch_pos to autoload/tlib/scratch.vim
  - Moved g:tlib_tags_extra, g:tlib_tag_substitute to autoload/tlib/tag.vim
  - tlib#agent#CompleteAgentNames(): Respect Arglead
  - Move g:tlib_viewline_position to autoload/tlib/buffer.vim
  - Move g:tlib_cache to autoload/tlib/cache.vim
  - Renamed g:tlib_filename_sep to g:tlib#dir#sep
  - prototype.UseScratch(): Set b:tlib_world
  - tlib#input: f9 toggles resticted view
  - tlib#input: next_agent, next_eval
  - tlib#input: Revised use of the popup menu
  - tlib#input: Disable popup menu for gui_gtk
  - tlib#input: Re-enabled the popup menu for gtk gui
  - tlib#input: FIX popup menu on Windows
  - Renamed g:tlib_numeric_chars to g:tlib#input#numeric_chars (disabled per-buffer values) (fixes #35)
  - Improve scratch list
  - New: tlib#grep
  - Merge branch 'master' of https://github.com/bruno-/tlib_vim into pull16
  - g:tlib_scratch_hidden: Configure how to "hide" the scratch buffer
  - tlib#grep#Do: don't escape "*" in patterns
  - Optimize use of visible scratch buffers
  - World.scratch_hidden parameter
  - scratch: Always use keepalt & keepjumps
  MD5 checksum: 2e40449c47dc606ccef57aa0b1e22e8e
version: "1.06"

version: "1.07"
  - Help template
  - prototype.Highlight_filename(): Use matchstr() instead of fnamemodify()
  - Display buffer-related filename indicators only if g:tlib_inputlist_filename_indicators is true
  - tlib#file#Join(): strip_slashes defaults to 1
  MD5 checksum: 6c8fa96fd3747be05df848ee93dd789b

version: "1.08"
  - list#input: Improved support for file indicators (closes #17)
  - tlib#char#Get(): Optionally, also return mod
  - tlib#input#ListW: Use #DisplayFormat(world.list)
  - Renamed cnfx filter to glob & minor filter-related enhancements
  - list#input: Make help available as command; help cannot be called via ?
  - list#input: Improved help message
  - list#input: Support Home & End keys
  - list#input: Added glob filter
  - tlib#agent#ShowInfo: Show full filename
  - tlib#cmd#BrowseOutputWithCallback: Support calling callback with multiple results
  - tlib#cmd#ParseScriptname: Properly parse results from :scriptnames
  - tlib#tab#Set()
  - Prepare for proper handling of scratch_split == -1
  - tlib#vim#CopyFunction()
  - tlib#cache#Value(): If generator is empty, use the optional argument as start value
  - tlib#persistent#Get() refers to tlib#cache#Get()
  MD5 checksum: 459ec620168d1ae9b18c69eb3f991832

  - tlib#cache#Filename(): Use sha256() for VIM >= 7.4
  - tlib#cache#Value(): Undo previous hack
  - tlib#list#Uniq(): option to remove empty values
  - tlib#cache#MTime(); tlib#persistent#Save() calls tlib#cache#Save()
  - tlib#input#ListW: Temporarily set noshowmode
  - tlib#list#Uniq(): Fix handling of empty items
  - lis picker: Remove <C-Space> from help
  - tlib#list#Uniq(): Implementation based on syntastic#util#unique(list) by scrooloose
  MD5 checksum: b5fb4107d63930c2c8b1f0f6b3a7ff07
version: "1.09"

  - tlib#cache#Filename(): Use sha256() for VIM >= 7.4
  - tlib#cache#Value(): Undo previous hack
  - tlib#list#Uniq(): option to remove empty values
  - tlib#cache#MTime(); tlib#persistent#Save() calls tlib#cache#Save()
  - tlib#input#ListW: Temporarily set noshowmode
  - tlib#list#Uniq(): Fix handling of empty items
  - lis picker: Remove <C-Space> from help
  - tlib#list#Uniq(): Implementation based on syntastic#util#unique(list) by scrooloose
  MD5 checksum: b5fb4107d63930c2c8b1f0f6b3a7ff07
version: "1.09"

  - tlib#string#Chomp: Optional argument: max number of chars that should be removed
  MD5 checksum: 8c1b94e25045580874e2f892d509291b
version: "1.10"

  - tlib#vcs#FindVCS(filename): Wrong parameters to fnamemodifiy if filename is a directory
  - Some system-related functions (e.g. facilitate use of cygwin tools)
  - tlib#arg#StringAsKeyArgsEqual(), tlib#arg#StringAsKeyArgs(): Support "key=val" type argument lists
  - tlib#vcs#Executable()
  - scripts/create_crc_table.rb
  - tlib#var#Get(): For namespaces other than global, replace "#" with "_"
  MD5 checksum: 4a33f2f23e1fc6600b32e7f8323e001e
version: "1.11"

  - tlib#list#ToDictionary()
  - tlib#dir#CanonicName(): Use tlib#file#Canonic()
  - tlib#file#Canonic()
  MD5 checksum: 7995ab58f31eb6673d20deab8761838e
version: "1.12"

  - SetInitialFilter(): Use deepcopy()
  - tlib#var#List(): use keys(namespace) for newer versions of vim
  - g:tlib#input#user_shortcuts (not functional yet)
  - tlib#input#List: state "picked"
  - UseInputListScratch(): Allow customization via self.index_next_syntax
  - tlib#cmd#Capture()
  - Facilitate customization of key agents via g:tlib_extend_keyagents_InputList_s, g:tlib_extend_keyagents_InputList_m
  MD5 checksum: 7dd8b17a1a5b555df979381dcbd4c9aa
version: "1.13"

  - SetInitialFilter(): Use deepcopy()
  - tlib#var#List(): use keys(namespace) for newer versions of vim
  - g:tlib#input#user_shortcuts (not functional yet)
  - tlib#input#List: state "picked"
  - UseInputListScratch(): Allow customization via self.index_next_syntax
  - tlib#cmd#Capture()
  - Facilitate customization of key agents via g:tlib_extend_keyagents_InputList_s, g:tlib_extend_keyagents_InputList_m
  MD5 checksum: 7dd8b17a1a5b555df979381dcbd4c9aa
version: "1.13"

version: "1.14"
  - FIX #18: Make sure the scratch isn't readonly
  - FIX: display filter (properly handle backslashes)
  - Remove loaded_* guard from autoload files
  - tlib#notify#Echo(): minor changes
  - tlib#file#Edit() (used by tlib#agent#ViewFile)
  - tlib#buffer#GetList(): Buffer numbers are converted to numbers
  - tlib#sys: Change order of functions (move tlib#sys#IsCygwinBin to the (possibly FIX #19)
  - g:tlib#sys#check_cygpath: Call tlib#sys#IsExecutable('cygpath', 1)  (possibly FIX #19)
  MD5 checksum: 2cf6386218736a2d09db43c8e751e5a4

version: "1.15"
  - tlib#file#Join(): New optional argument: maybe_absolute Drop preceding parts if a part looks like an absolute filename
  - tlib#sys#Open(), tlib#sys#IsSpecial() (moved from viki)
  - tlib#list#Uniq(): Handle hetergenous lists
  - FIX #21: duplicate help tag
  - NEW tlib#dictionary#Rev()
  - tlib#input#List(): Use <Tab> to complete current word
  - NEW tlib#arg#GetOpts(); ENH tlib#arg#StringAsKeyArgsEqual()
  - cache: Allow for in memory cache
  - NEW tlib#eval#Extend()
  - Move qfl/loclist browser from trag to tlib
  - FIX tlib#eval#Extend()
  - Simplify tlib#eval#Extend()
  - World.index_next_syntax may be a dict
  - tlib#qfl#QflList: Use copy()
  - tlib#arg#GetOpts: Handle exit code
  MD5 checksum: 13fd8b0e4ba9cd932c57fc40ac3f641f

version: "1.15"
  - tlib#file#Join(): New optional argument: maybe_absolute Drop preceding parts if a part looks like an absolute filename
  - tlib#sys#Open(), tlib#sys#IsSpecial() (moved from viki)
  - tlib#list#Uniq(): Handle hetergenous lists
  - FIX #21: duplicate help tag
  - NEW tlib#dictionary#Rev()
  - tlib#input#List(): Use <Tab> to complete current word
  - NEW tlib#arg#GetOpts(); ENH tlib#arg#StringAsKeyArgsEqual()
  - cache: Allow for in memory cache
  - NEW tlib#eval#Extend()
  - Move qfl/loclist browser from trag to tlib
  - FIX tlib#eval#Extend()
  - Simplify tlib#eval#Extend()
  - World.index_next_syntax may be a dict
  - tlib#qfl#QflList: Use copy()
  - tlib#arg#GetOpts: Handle exit code
  MD5 checksum: 13fd8b0e4ba9cd932c57fc40ac3f641f

  - tlib#arg#GetOpts: Handle short options
  - tlib#arg: support short flags & facilitate completion
  - NEW :TLibTrace
  - tlib#sys#system_browser: FIX XDG string
  - NEW tlib#sys#SystemInDir() (used by tlib#vcs#Ls)
  - tlib#agent#Complete: improve fltrx
  - Remove tlib#arg#Key(), :TKeyArg
  - Move :TRequire, :TTimeCommand to macros/tlib.vim
  - NEW tlib#cmd#TBrowseScriptnames()
  - TScratch: use empty('<bang>')
  - NEW :TLibTrace
  - tlib#qfl: FIX TTagedFilesFilename regexp
  - Remove tlib#arg#Key()
  - tlib#buffer#InsertText(): Don't use TKeyArg
  - tlib#eval#Extend: don't assign value
  - NEW :TLibTrace, tlib#trace (was tlib#debug)
  - NEW tlib#string#SplitCommaList()
  - NEW tlib#time#FormatNow()
  - tlib#arg#GetOpts: selectively disable "long", "short" flags
  - tlib#arg#CComplete(): Support values completion (complete_customlist field)
  - NEW tlib#date#Shift()
  - tlib#qfl#Balloon(): Handle items with no bufnr
  - NEW tlib#file#Glob, tlib#file#Globpath
  - tlib#progressbar#Display(): optional "always" argument
  - tlib#vcs#GitLsPostprocess(): Try to handle encoded filenames from git ls-files
  - tlib#vcs#GitLsPostprocess: Eval only \ddd substrings
  - FIX #22: duplicate tag
  - tlib#buffer: Use 2match instead of 3match (incompatibility with matchparen)
  - FIX #23: duplicate help tag
  - tlib#string#SplitCommaList: optional "sep" argument
  - Rename TLibTrace -> Tlibtrace; NEW Tlibtraceset command
  - Rename s:SetSyntax -> tlib#qfl#SetSyntax
  - mv tlib#rx#Convert to incubator
  MD5 checksum: f3656fb35b7b3033084d6c5e504aca61
version: "1.16"

  - tlib#input#List: #ReduceFilter: make sure the regexp is valid
  - TTimeCommand -> Ttimecommand
  - tlib#eval#Extend: mode argument for expand() compatibility
  - tlib#input#List: Key handlers can have additional arguments
  - tlib#qfl#AgentWithSelected: Set world
  - prototype.UseInputListScratch: Run tlib_UseInputListScratch hook earlier
  - tlib#qfl#AgentWithSelected: typo
  - tlib#arg#GetOpts: type conversion (comma-separated lists etc.)
  - tlib#arg: validators
  - NEW tlib#date#IsDate()
  - tlib#balloon#Remove: Unset &ballooneval, &balloonexpr
  - NEW tlib#balloon#Expand()
  - NEW tlib#date#Format()
  - FIX tlib#date#Shift(..., "+Xm") for months
  - NEW tlib#trace#Backtrace()
  - NEW tlib#type#Is(), tlib#type#Are(), tlib#type#Has(), tlib#type#Have()
  - NEW :Tlibassert
  MD5 checksum: 3c4125a28ff1860accd254846651c251
version: "1.17"

  - tlib#input#List: #ReduceFilter: make sure the regexp is valid
  - TTimeCommand -> Ttimecommand
  - tlib#eval#Extend: mode argument for expand() compatibility
  - tlib#input#List: Key handlers can have additional arguments
  - tlib#qfl#AgentWithSelected: Set world
  - prototype.UseInputListScratch: Run tlib_UseInputListScratch hook earlier
  - tlib#qfl#AgentWithSelected: typo
  - tlib#arg#GetOpts: type conversion (comma-separated lists etc.)
  - tlib#arg: validators
  - NEW tlib#date#IsDate()
  - tlib#balloon#Remove: Unset &ballooneval, &balloonexpr
  - NEW tlib#balloon#Expand()
  - NEW tlib#date#Format()
  - FIX tlib#date#Shift(..., "+Xm") for months
  - NEW tlib#trace#Backtrace()
  - NEW tlib#type#Is(), tlib#type#Are(), tlib#type#Has(), tlib#type#Have()
  - NEW :Tlibassert
  MD5 checksum: 3c4125a28ff1860accd254846651c251
version: "1.17"

  - tlib#input#List: #ReduceFilter: make sure the regexp is valid
  - TTimeCommand -> Ttimecommand
  - tlib#eval#Extend: mode argument for expand() compatibility
  - tlib#input#List: Key handlers can have additional arguments
  - tlib#qfl#AgentWithSelected: Set world
  - prototype.UseInputListScratch: Run tlib_UseInputListScratch hook earlier
  - tlib#qfl#AgentWithSelected: typo
  - tlib#arg#GetOpts: type conversion (comma-separated lists etc.)
  - tlib#arg: validators
  - NEW tlib#date#IsDate()
  - tlib#balloon#Remove: Unset &ballooneval, &balloonexpr
  - NEW tlib#balloon#Expand()
  - NEW tlib#date#Format()
  - FIX tlib#date#Shift(..., "+Xm") for months
  - NEW tlib#trace#Backtrace()
  - NEW tlib#type#Is(), tlib#type#Are(), tlib#type#Has(), tlib#type#Have()
  - NEW :Tlibassert
  MD5 checksum: 3c4125a28ff1860accd254846651c251
version: "1.17"

  - tlib#input#List: #ReduceFilter: make sure the regexp is valid
  - TTimeCommand -> Ttimecommand
  - tlib#eval#Extend: mode argument for expand() compatibility
  - tlib#input#List: Key handlers can have additional arguments
  - tlib#qfl#AgentWithSelected: Set world
  - prototype.UseInputListScratch: Run tlib_UseInputListScratch hook earlier
  - tlib#qfl#AgentWithSelected: typo
  - tlib#arg#GetOpts: type conversion (comma-separated lists etc.)
  - tlib#arg: validators
  - NEW tlib#date#IsDate()
  - tlib#balloon#Remove: Unset &ballooneval, &balloonexpr
  - NEW tlib#balloon#Expand()
  - NEW tlib#date#Format()
  - FIX tlib#date#Shift(..., "+Xm") for months
  - NEW tlib#trace#Backtrace()
  - NEW tlib#type#Is(), tlib#type#Are(), tlib#type#Has(), tlib#type#Have()
  - NEW :Tlibassert
  MD5 checksum: 3c4125a28ff1860accd254846651c251
version: "1.17"

  - tlib#arg: Completion for comma-separated lists
  - Use "silent cd"
  - NEW tlib#type#DefSchema(); FIX tlib#type#Has()
  - tlib#cache#Value(): minor change
  - tlib#date#IsDate() also checks whether the date is valid
  - ! tlib#sys#Open(): escape special chars only once
  - tlib#trace#Print: Allow for strings
  - :Tlibtrace, :Tlibtraceset, :Tlibassert remove `-bar`
  - NEW :Tlibtype (type/schema assertions); tlib#type#Is() also accepts schemas as "types"
  - tlib#dir#CD(): Use haslocaldir()
  - tlib#qfl#AgentGotoQFE: Don't use wincmd w
  - NEW tlib#string#Input()
  - FIX g:tlib#sys#system_rx; add OpenOffice exensions to g:tlib#sys#special_suffixes
  - NEW tlib#selection#GetSelection()
  - tlib#date#Shift(): Fix "Xm", ++specs
  - tlib#trace#Set: FIX Properly handly "-label"
  MD5 checksum: c3a1fe7d3cd86becbd3f7b0ba7ae9cd8
version: "1.19"

version: "1.20"
  - tlib#arg: Completion for comma-separated lists
  - Use "silent cd"
  - NEW tlib#type#DefSchema(); FIX tlib#type#Has()
  - tlib#cache#Value(): minor change
  - tlib#date#IsDate() also checks whether the date is valid
  - ! tlib#sys#Open(): escape special chars only once
  - tlib#trace#Print: Allow for strings
  - :Tlibtrace, :Tlibtraceset, :Tlibassert remove `-bar`
  - NEW :Tlibtype (type/schema assertions); tlib#type#Is() also accepts schemas as "types"
  - tlib#dir#CD(): Use haslocaldir()
  - tlib#qfl#AgentGotoQFE: Don't use wincmd w
  - NEW tlib#string#Input()
  - FIX g:tlib#sys#system_rx; add OpenOffice exensions to g:tlib#sys#special_suffixes
  - NEW tlib#selection#GetSelection()
  - tlib#date#Shift(): Fix "Xm", ++specs
  - tlib#trace#Set: FIX Properly handly "-label"
  MD5 checksum: c919e0782931a8c628c6996903f989d3