-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.html
More file actions
2045 lines (1482 loc) · 131 KB
/
Copy pathindex.html
File metadata and controls
2045 lines (1482 loc) · 131 KB
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
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Lintalist - Text Expander, Snippet manager, supporting searchable interactive texts to copy & paste text, run scripts, using easily exchangeable bundles</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="SHORTCUT ICON" href="favicon.ico" />
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<meta name="description" content="Lintalist manages searchable interactive texts to copy & paste text, run scripts, using easily exchangeable bundles - text-expander with hotkeys, full text search, plugins and scripts, gestionnaire des extraits de texte" />
<meta name="keywords" content="bundle, bundles, snippet, snippets, paste text, textpow, clipboard, searchable, search, autotext, auto-replace, template, clipboard, phrases, text, text substitution, text expander, text replacement, expand abbreviations, typing utility, trigger hotstrings, open source gestionnaire des extraits de texte" />
</head>
<body id='top'>
<div id='container'>
<div id='intro'>
<p style='color:#000;font-family:georgia;font-size:14px;line-height:150%;text-shadow: #fff 1px 1px 0px;' align='justify'>
<span style='float:right;margin:0;padding:0;margin-top:10px;margin-right:100px;font-size:10px;color:#000;text-shadow: #eee 1px 1px 0px;'><a href='https://autohotkey.com/' style='color:#000;'><img src='img/poweredbyahk.png' alt='' border='0' style='padding-top:4px;' /></a></span>
<img src='img/lintalist.png' alt='Lintalist' title='Lintalist' border='0' style='margin-left:-20px;padding-bottom:40px;' /><br clear='all' />
<b>Lintalist</b> allows you to store and (incrementally) <b>search</b> and <b>edit texts</b> in bundles and <b>paste</b> a selected text in your active program. The text <b>can</b> be interactive, for example you can automatically insert the current time and date, ask for (basic) user input or make a selection from a list etc and finally it can also <b>run a script</b>. You can use <b>keyboard shortcuts</b> or <b>abbreviations</b> to paste the text (or run the script) without opening the search window.<br /><br />Formatted text (html, markdown, rtf and images) is supported in Snippets, and Lintalist can be <b>extended</b> by writing your own <b><a href='#InteractiveBundleText'>plugins</a></b>.
<br /><br />
<span style='font-size:.8em;'><b>Lintalist</b> is <b>open source</b> and developed in <a href='https://autohotkey.com/'>AutoHotkey</a>, an easy to learn scripting language for Windows.
<b>[Windows 7/8/10/11]</b> <span style='color:#666;'>(untested under WinXP(sp3)/Vista)</span><br /></span>
<span class='date' style='float:right;display:inline;margin-top:0px;'>doc rev. 20260405</span></p>
</div>
<div class='column'>
<p><b>Program</b></p>
<ul>
<li><a href='#Introduction'>Introduction</a></li>
<li><a href='#Installing'>Installing Lintalist</a></li>
<li><a href='#Searching'>Start searching</a>
<ul>
<li><a href='#Omni'>OmniSearch</a></li>
<li><a href='#ColumnSearch'>ColumnSearch</a></li>
</ul>
</li>
<li><a href='#Shortcuts'>Using Shortcuts</a> (Hotkeys)</li>
<li><a href='#Shorthand'>Using Shorthand</a> (Abbrev.)</li>
<li><a href='#KeyboardShortcuts'>Lintalist Keyboard Shortcuts</a></li>
<li><a href='#TrayMenu'>Tray Menu</a></li>
<li><a href='#Configuration'>Configuration</a><ul>
<li><a href='#Configuration-MultiCaret'>MultiCaret</a></li>
<li><a href='#Configuration-AltPaste'>AltPaste</a></li>
<li><a href='#Configuration-Linefeed'>Linefeed</a></li>
<li><a href='#Configuration-AfterPaste'>AfterPaste</a></li>
<li><a href='#Configuration-ScriptTemplates'>Script Templates</a> (right click menu)</li>
<li><a href='#Configuration-AdditionalTools'>Additional Tools</a> (menu)</li>
<li><a href='#Configuration-SnippetEditor'>Additional Editors</a> (Snippet Editor)</li>
<li><a href='#Configuration-Themes'>Themes</a></li>
<li><a href='#Configuration-nvda'>NVDA</a></li>
</ul></li>
<li><a href='#cmdline'>Command line parameters</a></li>
<li><a href='#FAQ'>FAQ & Known Issues</a></li>
<li><a href='#Expert'>Expert</a></li>
<li><a href='#Linux'>Linux</a></li>
<li><a href='#History'>History</a> (changelog)</li>
</ul>
</div>
<div class='column'>
<p><b>Bundles</b></p>
<ul>
<li><a href='#LintalistBundles'>Lintalist Bundles Introduction</a></li>
<li><a href='#SnippetsBundles'>Snippets & Bundles</a><ul>
<li><a href='#InteractiveBundleText'>plugins</a> (how to)</li>
<li><a href='#Script'>scripts</a></li>
<li><a href='#Functions'>functions</a></li>
</ul></li>
<li><a href='#FormattedText'>Formatted Text Snippets</a></li>
<li><a href='#Editing'>Editing Bundles and Snippets</a></li>
<li><a href='#ManagingBundles'>Managing Bundles</a></li>
<li><a href='#LoadAllBundles'>Load All Bundles</a> (via tray)</li>
<li><a href='#ReloadBundles'>Reload Bundles</a> (via tray)</li>
</ul>
<br />
<p><b>Feedback</b></p>
<ul>
<li><a href='https://github.com/lintalist/lintalist/'>Issues & Discussions at GH</a> <span class='discussion'></span> (preferred)</li>
<li><a href='https://autohotkey.com/boards/viewtopic.php?f=6&t=3378'>autohotkey.com forum</a> (Guest posting allowed)</li>
<li><a href='http://www.portablefreeware.com/index.php?id=2686'>Portablefreeware.com</a></li>
<li><a href='http://www.donationcoder.com/forum/index.php?topic=41475.0'>Donationcoder.com</a></li>
</ul>
<br />
<p>Lintalist <b>Bundles</b>:<br />
<a href='https://github.com/lintalist/lintalist-bundles/'>github.com/lintalist/lintalist-bundles/</a></p>
<p>🎨 Lintalist <b>Themes</b>:<br />
<a href='https://github.com/lintalist/lintalist-themes'>github.com/lintalist/lintalist-themes</a></p>
<p>📺 <b>Videos:</b><br />
<a href="http://youtu.be/XfjZPAhHB8c">General</a>;
<a href="http://youtu.be/Q6SFkttjUQk">HTML/MD</a>;
<a href="http://youtu.be/J1StUarGHmI">Formatted</a>; and
<a href="http://youtu.be/Rtd_ChyRVkM">Plugins</a></p>
</div>
<div class='column'>
<p><b>Download Lintalist <em>1.9.27</em></b>
<p>
<a href='https://github.com/lintalist/lintalist/releases'><img src='img/lintalist65x65.gif' alt='Download Lintalist' width='65' align='left' border='0' style='margin-right: 5px;' /></a>
Download (incl. source):<br />
<a href='https://github.com/lintalist/lintalist/releases'><b>Latest release</b></a> (lintalist64.zip, 1mb)<br />Simply unpack and run lintalist.ahk or lintalist.exe<br />
</p>
<span class='tip' style="margin-bottom:10px;"><img src="img/usb.png" width=50 align=right title="USB image by Alessandro Rei (GNU/GPL) - http://findicons.com/icon/255067/usb?id=256158">Lintalist is a <b>portable application</b>. It stores all settings and bundles in the folder the program resides in. <a href="#portable">More...</a>
</span>
<p><b>Lintalist</b> Source code:<br />
<a href='https://github.com/lintalist/lintalist/'>github.com/lintalist/lintalist</a></p>
<p><b>Reviews</b></p>
<ul>
<li><a href='http://alternativeto.net/software/lintalist/'>AlternativeTo</a> (en) ↗</li>
<li><a href='https://www.softpedia.com/get/Office-tools/Other-Office-Tools/Lintalist.shtml'>Softpedia.com</a> (en) ↗</li>
<li><a href='https://www.majorgeeks.com/files/details/lintalist.html'>MajorGeeks.com</a> (en) ↗</li>
<li><a href='https://www.ghacks.net/2020/02/21/lintalist-is-an-open-source-snippet-manager-for-windows/'>Ghacks.com</a> (en) ↗</li>
<li><a href='https://www.freewarefiles.com/Lintalist_program_109453.html'>Freewarefiles.com</a> (en) ↗</li>
<li><a href='https://www.filecroco.com/download-lintalist/'>filecroco.com</a> (en) ↗</li>
<li><a href='http://www.ilovefreesoftware.com/25/windows/free-text-expander-tool-enter-snippets-according-to-active-program.html'>ilovefreesoftware.com</a> (en) ↗</li>
<li><a href='https://itigic.com/lintalist-an-alternative-to-the-windows-clipboard/'>itigic.com</a> (en) ↗ (<a href='https://itigic.com/pt/lintalist-an-alternative-to-the-windows-clipboard/'>pt</a>) ↗</li>
<li><a href='https://www.libellules.ch/dotclear/index.php?post/2018/10/31/Lintalist-gestionnaire-des-extraits-de-texte'>libellules.ch</a> (fr) ↗</li>
<li><a href='http://www.bchari.com/2019/03/lintalist.html'>bchari.com</a> (jp) ↗</li>
<li><a href='https://computertotaal.nl/artikelen/apps-software/dit-zijn-de-beste-freeware-tips-van-februari-2020/#rs-1582032317595'>computertotaal.nl</a> (nl) ↗</li>
<li><a href='https://videotanfolyam.hu/blog/2081/Lintalist_gyorsabb_es_kevesebb_gepeles_elore_megirt_szovegek_hasznalataval'>videotanfolyam.hu</a> (hu) ↗</li>
<!--
<li><a href=''></a> (en) ↗</li>
--></ul>
</div>
<div class='brk'></div>
<pre id='content'>
<h2 id='Introduction'><a href='#Introduction' class='headline'>Introduction</a></h2>
As noted above Lintalist allows you to store and (incrementally) <b>search</b> and <b>edit texts</b> in bundles and <b>paste</b> a selected text in your active program.
The texts, shortcuts, abbreviations and scripts are called <b>snippets</b> and they are stored in a so called <b>bundle</b>. A bundle is a simple text file, making it easy to understand, maintain and exchange bundles between users.
The bundles are <b>context sensitive</b>: based on the <b>(partial) window title</b> of the currently active program it will try to load one or more matching bundles, this will allow you to use the same shortcuts and shorthands in different applications and files making it even more flexible. You don't have to use or remember any shortcuts or shorthands because you can <b>search your bundles</b> at any time by opening the search window. Think of it as text-expander which will save you countless keystrokes and has a number of additional features: hotkeys, full text search, plugins and scripts.
Some might compare it to the "tag list" or "clip libraries" you might find in many text editors.
<span class='tip'>Bundles and Snippets can be edited using the <a href='#Editing'>Lintalist Bundle & Snippet Editors</a> OR in your preferred text editor.</span>
For example: If you are editing a HTML file, Lintalist could use both a HTML and CSS bundle, but if you are editing a CSS file only the CSS Bundle is loaded. So, in your HTML file the shortcut <strong>ctrl+b</strong> can insert <strong><strong></strong></strong> at the caret position (or wrap the tag around the selected text) and while editing your CSS file the shortcut <strong>ctrl+b</strong> can insert <strong>font-style: bold;</strong> at the caret position. If a shortcut is found in multiple active bundles a pop-up-menu will appear so you can choose which snippet & bundle you prefer.
<b>Note:</b> although Lintalist can expand abbreviations it is not intended to replicate or replace the native AutoHotkey Hotstrings features, see <a href='https://www.autohotkey.com/docs/v1/Hotstrings.htm'>autohotkey.com/docs/v1/Hotstrings.htm</a> for an introduction and description of all the options.
<span class='tip'>If you find this inconvenient, edit one of the snippets and change the shortcut or shorthand.</span>
This program is written in AutoHotkey, a free, open-source (scripting) utility for Windows. Learn more at <a href='https://autohotkey.com/'>autohotkey.com</a>.
<!--
<div class='column' style='float:right;'>
<h3 id='Usage'><em>Useful for...</em></h2>
- (Canned) email responses in a support environment
</div>
-->
<span class='tip' id='portable' style='width:250px;float:right;margin:10px;margin-top:40px;border-top:3px dashed #FCDC3B;border-bottom:3px dashed #FCDC3B;background-color:#FFF8DC;' ><img src="img/usb.png" width=50 align=right title="USB image by Alessandro Rei (GNU/GPL) - http://findicons.com/icon/255067/usb?id=256158">Lintalist is a <b>portable application</b>. It stores all settings and bundles in the folder the program resides in.
When you run it for the very first time it does ask if you want a shortcut on your desktop or would like to automatically start it with Windows but you don't have to do that. You can run the program from a USB drive or dropbox account for example.
If you want to take your copy of Lintalist with you all you have to do is copy the Lintalist folder. Same goes for making a backup.
</span>
<h3 id='FeatureList'><a href='#FeatureList' class='headline'>Full Feature List:</a></h3>
- Full text snippet search using four different search modes
- Context sensitive bundles
- Abbreviations for your favourite snippets (Hotstrings in AutoHotkey terminology)
- Shortcuts for your favourite snippets (Hotkeys in AutoHotkey terminology)
- Run (AutoHotkey-)scripts
- Local variables (user specific)
- Bundle converters (simple lists, CSV, UltraEdit, Texter)
- Portable application
- Plugins are easy to develop, included by default are:
- return caret to position in text
- insert date & time incl. dates and time math
- calendar
- user input
- select item from a list
- use clipboard
- use selected text
- counters (can be created on the fly)
- chain snippets (insert the text of one snippet into another)
- insert text from file
- math (calc)
- random selection
- split and reuse text
- formatted text and images using HTML, Markdown, RTF and Image
<h2 id='Installing'><a href='#Installing' class='headline'>Installing <em>Lintalist</em></a></h2>
Installing Lintalist is easy, just download the ZIP file and unpack it in a folder of your preference. Make sure you have write permissions for the destination folder (i.e. don't unpack into a folder like "C:\Program Files"). It is probably easiest to work with if you place it in your "My Documents" folder as this will make it easier for Lintalist to update your bundles while you are using them. Lintalist is fully portable and doesn't write any settings to the registry, so you can run it directly from a USB flash drive or DropBox folder for example.
If you are already an AutoHotkey user and have it installed, it is recommended to run <b>Lintalist.ahk</b>, this will ensure you will be running Lintalist with your preferred version of AutoHotkey (v1.1.37.02 recommended). If you don't have AutoHotkey installed you can start <b>Lintalist.exe</b>.
<b>Notes:</b>
- Lintalist.exe: A renamed AutoHotkey.exe (v1.1.37.02 32/64-bit Unicode, See https://autohotkey.com/ and/or https://autohotkey.com/download/)
- Lintalist.ahk: The actual (main) source code of the program (see https://github.com/lintalist/lintalist)
Scoop: <a href='https://scoop.sh/#/apps?q=lintalist'>https://scoop.sh/#/apps?q=lintalist</a> (untested, unsupported)
<h2 id='Searching'><a href='#Searching' class='headline'>Normal use: Starting Lintalist and searching for a Snippet</a></h2>
If Lintalist is running you can activate the search window by pressing <kbd>CAPSLOCK</kbd>, the default hotkey. You can change this hotkey via the configuration menu accessible via the tray menu by right clicking on the Lintalist icon <img src="img/lintalist65x65.gif" width="14" height="14" border="0" alt="lintalist icon" style="vertical-align:middle" >).
Based on the active program title, one or more bundles will be loaded into the search window so you can start searching:
<span class='small'>Lintalist search window:</span>
<img src='img/lintalist-search.png' alt='Lintalist search window, xhtml bundle loaded' style='max-width:100%;' />
<span class='small'>1: Type query.
2: Menu + search options.
3: Result list with Part 1, Part 2, Key(board shortcut), Short(hand, abbreviation). Columns are dynamic, if part 2, key or short are not present in the loaded bundle(s) they will not be displayed.
4: Preview of top most or selected snippet text. In statusbar: loaded bundle(s) and hits / number of snippets.</span>
<span class='tip'>If you press the same hotkey again while the Lintalist Search window is active it will toggle between the Wide & Narrow view. You can set the width and height of both views via the configuration menu.</span>
While you type, the number of results will decrease (called incremental search or quick filter). A small icon indicates if it is purely a text snippet <img src='img/texticon.gif' alt='Lintalist text snippet' style='display:inline;margin-bottom:-3px;' /> or if it actually will run a script <img src='img/scripticon.gif' alt='Lintalist script snippet' style='display:inline;margin-bottom:-2px;' />. You can turn the icons on and off via the configuration menu (<span class='setting'>ShowIcons</span> setting), you can also influence the order of the results by setting various sorting options (see <span class='setting'>SortByUsage</span> and <span class='setting'>ColumnSort</span> settings).
After pressing <kbd>ENTER</kbd> on a selected entry from the results list, by default the text (Part1) is pasted in the active program (note the explanation above). <kbd>SHIFT</kbd>+<kbd>ENTER</kbd> and <kbd>ENTER</kbd> will use the first item in the results list unless you have selected another item with the arrow keys. Depending on the snippet either a text is pasted OR a script is run (note explanation above).
If you just want to copy the snippet to the clipboard and not paste it press <kbd>Alt</kbd>+<kbd>ENTER</kbd> for Part 1 and <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>ENTER</kbd> for Part 2.
You can also use the <kbd>Up</kbd> and <kbd>Down</kbd> <!--, <kbd>Page Up</kbd> and <kbd>Page Down</kbd> -->keys to navigate through the list. You can select a different bundle or load all bundles via the Bundle menu. If you choose a bundle from the bundle menu (<kbd>Alt</kbd>+<kbd>b</kbd>), that bundle will be <b style='color:#c00;'>locked</b> (toolbar icon: <img src='img/locked.ico' width='18' height='18' alt='locked icon' style="vertical-align:middle" />) and always remain active until you unlock it (<kbd>Alt</kbd>+<kbd>l</kbd>, letter l).
If enabled you can use <kbd>Alt</kbd>+<kbd>1..0</kbd> for the first ten search results.
<span class='tip'>What happens when you (double) click on an entry in the list is determined by a setting in the configuration menu. (<span class='setting'>SingleClickSends</span> and <span class='setting'>DoubleClickSends</span> setting)</span>
<b id='default-bundle'><a href='#SearchOptions' class='headline'>Default bundle</a></b>: there is also a default bundle which is always loaded - unless you lock a specific bundle - that way you always have your generic snippets available in every program.
<span class='tip'>If you have no need for context sensitive bundles, simply make use of the default bundle and put in all your snippets. In such a case you could also lock the default bundle although there should be no need to do so.</span>
<h3 id='SearchOptions'><a href='#SearchOptions' class='headline'>Search options:</a></h3>
You can search for text in your bundles using four different methods:
<table>
<thead>
<tr>
<th>Method</th>
<th>Description</th>
</tr>
</thead>
<tr><td><b><span style='text-decoration:underline;'>R</span>glr</b></td><td><kbd>Alt</kbd>+<kbd>r</kbd> is Regular or Normal search: the text you type must be found literally
Example:
Typing 'searching text' will find '<b style='color:#c00;'>searching text</b>' but NOT 'searching for text'</td></tr>
<tr><td><b>F<span style='text-decoration:underline;'>z</span>zy</b></td><td><kbd>Alt</kbd>+<kbd>z</kbd> is Fuzzy search: the text you type can be found anywhere making it more
flexible to narrow down the results.
Example:
Typing 'sea tex' will find '<b style='color:#c00;'>sea</b>rching <b style='color:#c00;'>tex</b>t' but ALSO '<b style='color:#c00;'>sea</b>rching for <b style='color:#c00;'>tex</b>t' or '<b style='color:#c00;'>tex</b>t about the <b style='color:#c00;'>sea</b>'</td></tr>
<tr><td><b>RgE<span style='text-decoration:underline;'>x</span></b></td><td><kbd>Alt</kbd>+<kbd>x</kbd> is Regular Expression search (Perl-compatible, PCRE) so you can search for patterns
Example: se\w*g will find '<b style='color:#c00;'>searching</b>' '<b style='color:#c00;'>sewing</b>' etc.
See <a href='https://www.autohotkey.com/docs/v1/commands/RegExMatch.htm'>autohotkey.com/docs/v1/commands/RegExMatch.htm</a> for more information
about using Regular expression for searching [see notes about RgEx search below
for some background info as not ALL Regular Expressions may produce the expected
results]</td></tr>
<tr><td><b><span style='text-decoration:underline;'>M</span>agc</b></td><td><kbd>Alt</kbd>+<kbd>m</kbd> is Magic search (QuickSilver like search - experimental)
Example:
Typing 'sax' will find '<b style='color:#c00;'>s</b>e<b style='color:#c00;'>a</b>rching te<b style='color:#c00;'>x</b>t'</td></tr>
</tbody>
</table>
<b id='case-sensitive'><a href='#case-sensitive' class='headline'>Case (in)sensitive search</a></b>
Use Case <kbd>Alt</kbd>+<kbd>c</kbd> to make your searches case sensitive.
In the area below the search results you will see the preview window of the currently active item in the bundle (Part1 by default but this can be changed via the configuration menu and settings.ini).
The statusbar shows which bundles are loaded and how many items were found out of the total items.
You can control the maximum number of search results and the maximum number of snippets that you can see in the results list.
<h3 id='SearchSnippets'><a href='#SearchSnippets' class='headline'>Which sections of the snippets are searched?</a></h3>
It will search for a match in <b>Part1</b>, <b>Part2</b> and <b>Shorthand</b> (so not in the Shortcut and not in the Script code). Note that in order to show a more legible text in the results list, Part1 and Part2 are shown differently if they are multi-line texts:
A new line is replaced by <b>\n</b> and a tab by <b>\t</b> and it will search <b>these texts</b> and not the original multi-line (but the original ones will be used when the texts are pasted, once you see it in action couple of times you will get used to it pretty quickly)
<h3 id='RegExCase'><a href='#RegExCase' class='headline'>RegEx & Case sensitive search</a></h3>
<span style='color:#c00;'><techtalk></span> If the <b>Case check-box</b> is not checked your searches will be case-insensitive. When using the RegEx search method the "i)" option for the regular expression will automatically be inserted before each snippet is searched. This may lead to unexpected results if you pass on other options for your RegEx search.
Example: The case-insensitive RegEx 'se\w*g' it is actually using the following regular expression 'i)se\w*g' while searching. This is done for convenience (otherwise you would have to type i) every time you wanted to do a case-insensitive search (RegEx is by default case sensitive). If you want to pass on extra options it is best to turn Case sensitive ON and add the options you need as described here <a href='https://www.autohotkey.com/docs/v1/commands/RegExMatch.htm#Options'>autohotkey.com/docs/v1/commands/RegExMatch.htm#Options</a>. This behaviour may change in future version of Lintalist. <span style='color:#c00;'></techtalk></span>
<b id='searchlv'><a href='#searchlv' class='headline'>Search letter variations</a></b>
Sometimes accented letters are part of the text you are searching for. These can be difficult or slow to type. By adding the variations of these letters to the search string you can search for 'cafe' but still find 'café'. So the 'e' in the query will be translated to searching for 'eéèêḙěĕẽḛẻėëēȩęᶒɇȅếềễểḝḗḕȇẹệæǽǣœᵫ'.
When active all search modes will use a Regular Expression (Regular and Fuzzy)
(De)Activate the setting via the <i>L<u>v</u></i> button in the Search GUI (<kbd>Alt</kbd>+<kbd>v</kbd>) or the <span class='setting'>SearchLetterVariations</span> setting in the Configuration menu.
More information in the comments of 'include\LetterVariations.ahk'
<h3 id='Omni'><a href='#Omni' class='headline'><em>Omni</em>Search (search all bundles)</a></h3>
By default you are only searching in the loaded bundles, you can however search in all bundles using the following methods:
<b>1. Load All Bundles</b>
You can Load all bundles:
- use the tray many, select Load all bundles and bring up the search GUI; or
- bring up the search GUI, bundle menu, first option: Load all bundles
This has the disadvantage that it also sets the Locked state so next time you bring up the search GUI you are searching in all bundles again and you have to unlock it.
<b>2. Omnisearch query</b>
When you start your query with a predefined character (<b style='color:#c00;'>@</b> by default) Lintalist will search in all bundles independent of the ones that are currently loaded or locked in the search Gui. You can define this character in the settings (OmniChar). If you don't want to use Omnisearch while typing a query simply disable it by erasing the OmniChar in the settings menu.
Query: state -> will find "state" in the currently loaded bundle(s)
Query: <b style='color:#c00;'>@</b>state -> will find "state" in all bundles
<b>3. Omnisearch shortcuts</b>
- While search GUI is active: press <kbd>F2</kbd> to toggle the Omnisearch.
- If you press <kbd>Ctrl</kbd>+<kbd>Capslock</kbd> the search GUI is opened in Omnisearch mode (tip: use <kbd>F2</kbd> to toggle). You can define the hotkey in the settings - <span class='setting'>StartOmniSearchHotkey</span>
Note: while using option 2 & 3 the text "(All)" will be added to the statusbar (bottom right) to indicate you are using Omnisearch when the results are updated.
<h3 id='ColumnSearch'><a href='#ColumnSearch' class='headline'><em>Column</em>Search (search specific part of a snippet)</a></h3>
By default Lintalist tries to find matches in <em>part1, part2</em>, and <em>shorthand</em> of a snippet <a href='#SearchSnippets'>while searching</a>.
When you start your query with a number (1 to 6), followed by a predefined character (<b style='color:#c00;'></b><</b> by default, <span class='setting'>ColumnSearchDelimiter</span> in the settings) Lintalist will search in a specific part of a snippet. To disable this feature erase the <span class='setting'>ColumnSearchDelimiter</span> in the settings.
Query: state -> will find "state" in part1, part2, and shorthand of a snippet
Query: 1<b style='color:#c00;'><</b>state -> will find "state" <b>only</b> if it is found in <b>part1</b> of a snippet
1 to 5 refers to the <a href="#SnippetsBundles">"part" or "section"</a> of a snippet (6 to the bundle name + description if any):
1< Part1
2< Part2
3< Shortcut (key)
4< Shorthand (abbreviation)
5< Script
6< Bundle name and description
Start the query with the OmniSearch character to combine it with ColumnSearch (e.g. <b style='color:#c00;'>@</b>1<b style='color:#c00;'><</b>state)
<h3 id='lockedbundles'><a href='#lockedbundles' class='headline'><em>Locked</em> bundle(s), TitleMatch</a></h3>
By default bundles use the TitleMatch property to determine which snippets to use. In order to always use a specific (set of) bundles:
1. Use All Bundles all of the time - see <a href='#LoadAllBundles'>Load All Bundles</a>
2. Load a specific bundle from the Bundle menu.
3. Use the <b style='color:#c00;'>lock</b> toolbar icon: <img src='img/locked.ico' width='18' height='18' alt='locked icon' style="vertical-align:middle" />, or shortcut <kbd>Alt</kbd>+<kbd>l</kbd>
See also <a href='#faq5'>FAQ 5</a>.
<h2 id='Shortcuts'><a href='#Shortcuts' class='headline'>Using <em>Shortcuts</em> (Hotkeys)</a></h2>
If the snippet definition includes a shortcut and is part of a currently active bundle you can insert <b>the text from Part 1</b> OR <b>run the script</b> by pressing the hotkey WITHOUT activating the Lintalist search window. Shortcuts are disabled while the Lintalist search window is active.
<span class='tip'>You can enable / disable the use of Shortcuts via the Tray menu, or the button in the toolbar in the search window</span>
<h2 id='Shorthand'><a href='#Shorthand' class='headline'>Using <em>Shorthand</em> (Abbreviations)</a></h2>
If the snippet definition includes a shorthand and is part of a currently active bundle you can insert <b>the text from Part 1</b> OR <b>run the script</b> by typing the abbreviation (= the shorthand) followed by a <b>Space</b> or <b>Tab</b> WITHOUT activating the Lintalist search window. Shorthand is disabled while the Lintalist search window is active.
<span class='tip'>You can enable / disable the use of Shorthands via the Tray menu, or the button in the toolbar in the search window</span>
<h2 id='KeyboardShortcuts'><a href='#KeyboardShortcuts' class='headline'>Lintalist Keyboard <em>Shortcuts</em></a></h2>
Apart from the hotkeys defined in bundles, Lintalist has two general sets of hotkeys, one while Lintalist waits in the background and one while the search window is active. Bring up the search window just press <kbd>CAPSLOCK</kbd> (default setting)
Shortcuts while search window is not active
<table>
<thead>
<tr>
<th width="20%">Keys</th>
<th width="80%">Description</th>
</tr>
</thead>
<tbody>
<tr><td><b><kbd>Capslock</kbd> </b></td><td>Start Searching (Open Lintalist search window, change via configuration, <span class='setting'>StartSearchHotkey</span> setting). If already active you can toggle between Wide and Narrow view.
There is a setting to also use this key to Hide the search window: <span class='setting'>StartSearchHotkeyToggle</span>.</td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Capslock</kbd></b></td><td>Start Searching in <a href="#Omni">Omnisearch</a> mode (Open Lintalist searching window, change via config).</td></tr>
<tr><td><b><kbd>Winkey</kbd>+<kbd>z</kbd></b></td><td>Start <a href="#QuickSearchHotkey">Quick search</a></td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Winkey</kbd>+<kbd>q</kbd></b></td><td>Quit Lintalist</td></tr>
</tbody>
</table>
<b>Active Lintalist Gui</b>
<table>
<thead>
<tr>
<th width="20%">Keys</th>
<th width="80%">Description</th>
</tr>
</thead>
<tbody>
<tr><td><b><kbd>Esc</kbd></b></td><td>Close/Hide Search Window </td></tr>
<tr><td><b><kbd>Up</kbd>, <kbd>Down</kbd></b></td><td>Scroll through results, NumpadUp and NumpadDown also work.</td></tr>
<tr><td><b><kbd>Enter</kbd></b></td><td>Paste Found Text (Part 1) or Run Script *1 </td></tr>
<tr><td><b><kbd>Shift</kbd>+<kbd>Enter</kbd></b></td><td>Paste Found Text (Part 2) or Run Script *1 </td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Enter</kbd></b></td><td>Paste Found Text (Part 1) and DO NOT run script </td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Enter</kbd></b></td><td>Paste Found Text (Part 2) and DO NOT run script </td></tr>
<tr><td><b><kbd>Alt</kbd>+<kbd>Enter</kbd></b></td><td>Copy Text (Part 1) to clipboard *2 </td></tr>
<tr><td><b><kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>Enter</kbd></b></td><td>Copy Text (Part 2) to clipboard </td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>Enter</kbd></b></td><td>Join Part1 and Part2 as one text to Paste or Copy to Clipboard (see <span class='setting'>BothParts*</span> settings) and DO NOT run script</td></tr>
<tr><td><b><kbd> F2 </kbd></b></td><td>Omnisearch (toggle) <a href="#Omni">search in all bundles</a></td></tr>
<tr><td><b><kbd> F4 </kbd></b></td><td>Edit Snippet </td></tr>
<tr><td><b><kbd> F5 </kbd></b></td><td>Copy Snippet and Edit (current bundle) </td></tr>
<tr><td><b><kbd> F6 </kbd></b></td><td>Move Snippet to another bundle </td></tr>
<tr><td><b><kbd> F7 </kbd></b></td><td>Add new Snippet </td></tr>
<tr><td><b><kbd> F8 </kbd></b></td><td>Delete Snippet </td></tr>
<tr><td><b><kbd> F10 </kbd></b></td><td>Bundle properties </td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>1..5</kbd></b></td><td>1: Sort Part 1 (toggle)
2: Sort Part 2 (toggle)
3: Sort Shorthand (toggle)
4: Sort Key (toggle)
5: Sort Bundle name (toggle)
The sort will work even the column is not visible - for example if you do not show the Bundle name in the search results (see DisplayBundle) you can still sort it.</td></tr>
<tr><td><b><kbd>Alt</kbd>+<kbd>1..0</kbd></b></td><td>You can use <kbd>Alt</kbd>+<kbd>1</kbd> to <kbd>Alt</kbd>+<kbd>0</kbd> for the first ten search results. The visual cues are disabled when using ColumnSort other than "NoSort"
These can be disabled via the <span class='setting'>ShortcutSearchGui</span> setting (Configuration).
Note <kbd>Alt</kbd>+<kbd>1..0</kbd> can also be used in the <code>[[Choice]]</code> plugin when using 'Select by digit' in the Plugin gui.
</td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>t</kbd></b></td><td>Toggle Search Window on top on or off. (per search instance)</td></tr>
<tr><td><b><kbd>Ctrl</kbd>+<kbd>f</kbd></b></td><td>Set focus on the search box.</td></tr>
<tr><td><b><kbd>Tab</kbd></b></td><td>Set focus on the search results (listview) - useful for screenreaders such as NVDA.</td></tr>
</tbody>
</table>
*1 - If Scripts are Paused the script - if any - will not run and text will be sent
- The action for a single- or doubleclick with the left mouse button can be defined in the Configuration menu
(<span class='setting'>SingleClickSends</span> and <span class='setting'>DoubleClickSends</span>)
*2 This can be used get the selected snippet into the clipboard using other methods as well, see plugins\readme-howto.txt, "Extending Snippet processing" section
<b>Lintalist Plugins</b>
<table>
<thead>
<tr>
<th width="20%">Keys</th>
<th width="80%">Description</th>
</tr>
</thead>
<tbody>
<tr><td><b><kbd>Ins</kbd></b></td><td>Inserts the search query in the input control when using <code>[[Input]]</code> and <code>[[Choice]]</code> (with search option). <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/discussions/280'>Discussion @ GH - #280</a></td></tr>
<tr><td><b><kbd>F3</kbd></b></td><td><code>[[FileList/Choice]]</code> toggle preview window to view an image if the FileList has returned full paths. If an option in choice seems to be a valid path (a-z:\) it automatically opens the preview window. (Also supports a limited number of text formats: txt,md,html,css,ahk,cmd) <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/issues/239'>Discussion @ GH - #239</a></td></tr>
</tbody>
</table>
<h2 id='TrayMenu'><a href='#TrayMenu' class='headline'>Tray <em>Menu</em></a></h2>
- <a href='#LoadAllBundles'>Load All Bundles</a>
- <a href='#Configuration'>Configuration</a>
- <a href='#Reload'>Reload Bundles</a>
- <a href='#Pause'>Pause Lintalist</a>
- <a href='#Pause'>Pause Shortcut</a>
- <a href='#Pause'>Pause Shorthand</a>
- <a href='#Pause'>Pause Scripts</a>
- <a href='index.html'>Help</a>
- Exit
<h3 id='LoadAllBundles'><a href='#LoadAllBundles' class='headline'>Load All <em>Bundles</em></a></h3>
You can tell Lintalist to simply load all bundles via the Tray menu or Bundle menu (<kbd>Alt</kbd>+<kbd>b</kbd>), these will automatically be locked until you either choose a specific bundle from the Bundle menu OR unlock it (<kbd>Alt</kbd>+<kbd>l</kbd>) in search window).
<h3 id='ReloadBundles'><a href='#ReloadBundles' class='headline'>Reload <em>Bundles</em></a></h3>
If you have added or removed a new bundle you must reload them all to ensure they are read in memory so they can be searched and new or changed shortcuts and shorthands are correctly updated.
<h3 id='Pause'><a href='#Pause' class='headline'>Pause</a></h3>
You can pause Lintalist entirely or pause Shortcuts, Shorthand and Scripts separately. Note: you can also bypass a script with Ctrl-Enter and Ctrl-Shift-Enter, see <a href='#KeyboardShortcuts'>Lintalist Keyboard Shortcuts</a> if you select a snippet in the search window.
<h2 id='Configuration'><a href='#Configuration' class='headline'>Configuration</a></h2>
You can either edit the settings.ini file directly with a text editor (like notepad) or use the more user friendly configuration window which is available via the tray-menu. In order for the changes to take effect you must reload the application after changing any settings. If you <b>edit settings.ini manually be sure to exit Lintalist first</b> otherwise any changes you make might be overwritten by reloading Lintalist.
A description of all settings can also be found in settings.ini <!-- or in <a href="https://github.com/lintalist/lintalist/wiki/Settings">the Wiki</a>. -->
Some important options:
<table>
<thead>
<tr>
<th>Config</th>
<th>Description</th>
</tr>
</thead>
<tr id='SendMethod'><td><b><a href='#SendMethod' class='headline'>SendMethod</a></b></td><td>If you experience any problems with the way text is sent to the various applications you use,
you should try various methods to see if it resolves the issue:
1 = SendInput
2 = SendEvent
3 = SendPlay
4 = ControlSend</td></tr>
<tr id='PasteDelay'><td><b><a href='#PasteDelay' class='headline'>PasteDelay</a></b></td><td>If the text of the snippet is not pasted in to your application after a search, shortcut
or shorthand you could try to increase the number of Milliseconds before the text is
pasted.</td></tr>
<tr id='TriggerKeys'><td><b><a href='#TriggerKeys' class='headline'>TriggerKeys</a></b></td><td>If Shorthand is activate by default pressing a TAB and SPACE key will expand abbreviations. You can limit this to just the TAB or SPACE by editing this setting. You can also use other keys such as F1-F12 for example.
<!--
Alt, LWin, RWin, Shift, Home, End, PgUp, PgDn, Up, Down, Left, Right
.,¿?¡!'"()[]{, }, {}~$&*-+=\/><^|@#:`%;
-->
More options may be added in future versions such as special hotkeys.</td></tr>
<tr id='DoubleClickSends'><td><b><a href='#DoubleClickSends' class='headline'>DoubleClickSends</a></b></td><td>You can change what happens if you double click on an entry in the search results:
1 = Paste Part1, as enter e.g. run script if present
2 = Paste Part2, as shift-enter e.g. run script if present
3 = Paste Part1, as ctrl-enter e.g. always paste part1 even if script present
4 = Paste Part2, as ctrl-shift-enter e.g. always paste part2 even if script present
5 = Edit snippet
6 = New snippet
<span class='setting'>SingleClickSends</span> use a single click for the same actions above.
</td></tr>
<tr id='DefaultBundle'><td><b><a href='#DefaultBundle' class='headline'>DefaultBundle</a></b></td><td>File name e.g. default.txt
If no matching bundle can be found based on the window title load this bundle.</td></tr>
<tr id='AlwaysLoadBundles'><td><b><a href='#AlwaysLoadBundles' class='headline'>AlwaysLoadBundles</a></b></td><td>File name(s) e.g. default.txt,bbcode.txt,css.txt
Bundles you always want to be loaded as comma separated list.
So Lintalist will try to load one or more specific bundles based on the currently
active application AND will always add the bundles listed here as well.</td></tr>
<tr id='MaxRes'><td><b><a href='#MaxRes' class='headline'>MaxRes</b></a></td><td>The number of maximum results while searching (loaded bundle(s) may be very large,
this will make the program more responsive)</td></tr>
<tr id='StartSearchHotkey'><td><b><a href='#StartSearchHotkey' class='headline'>StartSearchHotkey</a></b></td><td>The Shortcut (Hotkey) used to launch the <a href='#Searching'>Lintalist search window</a>
(Capslock by default)
If you press this Shortcut while the Lintalist search window is active it will toggle
between Wide & Narrow view (you can set the width and height of both views via the
configuration menu)
Note about <b>TeamViewer</b>: the "send key combinations" option must be enabled (checked) and you may need to experiment with a short/key combination that works for you (the default QuickSearchHotkey shortcut does seem to work out of the box for example, while Capslock may not). <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/issues/104'>Discussion @ GH - #104</a>
<span class='setting'>StartSearchHotkeyToggle</span> setting to Show/Hide the Search Window using the same shortcut.</td></tr>
<tr id='QuickSearchHotkey'><td><b><a href='#QuickSearchHotkey' class='headline'>QuickSearchHotkey</a></b></td><td>Hotkey used to start quick search: It will cut (ctrl-x) the word to the left, open
Lintalist and starts a search. If only one match is found it simply pastes or runs
the result directly.
Note that some editors cut or copy an entire line if no selection is made (UltraEdit,
Sublime Text, Editpad ...) so it may lead to some unexpected results.
If you work with such an editor make sure you have always selected some text before
you start this. Some editors will allow you to change this behaviour (UE).
If you want to disable QuickSearchHotkey simply delete the hotkey in the configuration (make it empty)
</td></tr>
<tr id='PreviewSection'><td><b><a href='#PreviewSection' class='headline'>PreviewSection</a></b></td><td>What to show in the preview area:
1 = Text of part one of snippet (recommended)
2 = Text of part two of snippet (fall back on Part 1 if Part 2 is empty)
3 = Script code of snippet (fall back to Part 1 if 3 is empty)</td></tr>
<tr id='PasteMethod'><td><b><a href='#PasteMethod' class='headline'>PasteMethod</a></b></td><td>Retain current clipboard or set it as current clipboard content
0 = Paste snippet and retain current clipboard content (=default behaviour)
1 = Paste snippet and keep it as the current clipboard content (so you can manually paste it again)
2 = Don't paste snippet content but copy it to the clipboard so you can manually paste it.
Plugin <a href='#pastemethod-plugin'>[[PasteMethod]]</a> similar to global setting but now acts on snippet basis.
</td></tr>
<tr id='OnPaste'><td><b><a href='#OnPaste' class='headline'>OnPaste</a></b></td><td>Exit Lintalist after pasting snippet?
0 = No
1 = Yes</td></tr>
<tr id='Statistics'><td><b><a href='#Statistics' class='headline'>Statistics</a></b></td><td>Default setting: turned off.
You can keep track of bundle and snippet usage by activating the Statistics. View the Stats via the Tray- or Edit menu options (Search GUI).
The Statistics are saved to statistics.ini every two hours while Lintalist is running, viewing the Statistics, and closing the program.
Note that not all the Statistics may be a 100% accurate. <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/issues/112'>Discussion @ GH - #112</a></td></tr>
<tr id='AlternateRowColor'><td><b><a href='#AlternateRowColor' class='headline'>AlternateRowColor</a></b> </td><td>Defines the alternating background colour of Rows in the Search Results (listview).
6-digit hexadecimal RGB (RRGGBB) format. (eeeeee or c0c0c0 are light gray). Set to empty value to disable.
Related: <span class='setting'>AlternateSelectionColor</span> (define colour of highlighted row in search results).</td></tr>
</tbody>
</table>
Edit settings.ini (close Lintalist first) or choose configuration in the tray menu for more options and restart to apply changes.
<span class='small'>Settings</span>
<img src='img/lintalist-config.png' alt='Lintalist settings' border='0' style='max-width:100%;' />
<h3 id='Configuration-MultiCaret'><a href='#Configuration-MultiCaret' class='headline'>Multi<em>Caret</em></a></h3>
You can define multiple caret locations in your snippet, see <a href='#caret-plugin'>the caret plugin</a> for a brief introduction.
Detailed information on how to setup <b>MultiCaret.ini</b> in <a href='https://github.com/lintalist/lintalist/blob/master/docs/MultiCaret.md'>docs/MultiCaret.md</a>.
<h3 id='Configuration-AltPaste'><a href='#Configuration-AltPaste' class='headline'>Alt<em>Paste</em></a></h3>
By default Lintalist uses <kbd>ctrl</kbd>+<kbd>c</kbd>, <kbd>ctrl</kbd>+<kbd>v</kbd> to copy and paste.
If you need to use other shortcuts in specific programs (console or graphics applications for example) you can define these in <b>AltPaste.ini</b>, see <a href='https://github.com/lintalist/lintalist/blob/master/docs/AltPaste.md'>docs/AltPaste.md</a> for more information.
This includes a workaround for Notepad++
<h3 id='Configuration-Linefeed'><a href='#Configuration-Linefeed' class='headline'>Line<em>feed</em></a></h3>
Some programs require CRLF to be used for pasting a new line into the document/control (notepad.exe for example) - otherwise pasting a snippet will have its new lines (enters, returns) 'removed' or so it seems:
<blockquote class='boxed'>line1line2line3</blockquote> <i>vs</i>
<blockquote class='boxed'>line1
line2
line3
</blockquote>
For specific programs you can define the character that needs to be used instead of the default "new line" character. This can either be one single character or multiple characters - see the linefeed.ini for more information. As an example two programs are already included, [notepad.exe] and [wordpad.exe].
This can also be useful in for applications where pasting (CR)LF may be seen as "enter" which would (accidentally) execute / start process (command line applications for example) - replacing linefeed(s) with a space would prevent this. <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/issues/65'>Discussion @ GH - #65</a>
<h3 id='Configuration-AfterPaste'><a href='#Configuration-AfterPaste' class='headline'>After<em>Paste</em><span style='color:#080;'>.ahk</span></a></h3>
If you want to perform some special action after Lintalist performs a copy or paste you can create a file in the include\ folder:
Mandatory filename: AfterPaste.ahk
The code is #include-d directly after the paste or copy command (in default.ahk) but before restoring the clipboard. It can not contain functions.
You can use "If (Keys = [ShortcutCopy|ShortcutPaste|ShortcutCut])" to determine when you want an action to be performed - see NVDA example below.
If you want to use this in scripts as well be sure to include LLInit() in your script code so the proper values of ShortcutCopy, ShortcutPaste, and ShortcutCut are made available in the script.
<h3 id='Configuration-ScriptTemplates'><a href='#Configuration-ScriptTemplates' class='headline'>Script <em>Templates</em></a></h3>
To show a menu to insert templates into the script editor (on right click):
1. Create a folder named <b>ScriptTemplates</b> in the Lintalist folder (so where lintalist.ahk/exe is residing.)
2. Any *.ahk files placed in the folder will appear after a right click in the edit control. Changes to the folder contents will only appear in the editor after restarting lintalist. (This menu is only shown in the script section of the snippet editor, e.g. the third editing section at the bottom).
<span class='discussion'></span><a href='https://github.com/lintalist/lintalist/discussions/256'>Discussion @ GH - #256</a>
<h3 id='Configuration-AdditionalTools'><a href='#Configuration-AdditionalTools' class='headline'>Additional <em>Tools</em></a></h3>
<span style='color:#c00;'><expert option></span>
The Lintalist Search and Snippet Editor have a 'Tools' menu with the above 'Bundle Converters'.
Create a <b>UserTools.ini</b> in the Lintalist folder (where <b>settings.ini</b> also resides) to add new options to this Tools menu.
Format:
name of menu option=path\program-to-run.exe (quotes around paths with spaces)
<blockquote class='boxed'>
<b>[Settings]</b>
Notepad=c:\windows\notepad.exe
Paint=mspaint.exe
</blockquote>
To remove these tools delete or rename UserTools.ini and restart Lintalist. <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/discussions/275'>Discussion @ GH - #275</a>
<span style='color:#c00;'></expert option></span>
<h3 id='Configuration-Themes'><a href='#Configuration-Themes' class='headline'>Themes</a></h3>
The Lintalist Search GUI and Snippet Editor can be styled using Themes defined in INI files.
Support will remain somewhat rudimentary. Given the limitations of AutoHotkey in this regard not all (parts of) the controls and Windows can be styled. There might also be some undesired flickering or some controls may loose their theme color temporarily. GUIs used by Plugins are not styled.
Description of how Themes work and can be made here <a href='https://github.com/lintalist/lintalist/blob/master/themes/Themes.md'>themes/Themes.md</a>
Example themes @ <a href='https://github.com/lintalist/lintalist-themes'>https://github.com/lintalist/lintalist-themes</a> (unpack zip file to lintalist\themes\)
<span class='discussion'></span><a href='https://github.com/lintalist/lintalist/issues/147'>Discussion @ GH - #147</a>
<h3 id='Configuration-nvda'><a href='#Configuration-nvda' class='headline'>NVDA</a></h3>
If you want Lintalist to let NVDA speak the text of the snippet that has been pasted you can make use of some additional code.
For NVDA users there is a ready made AfterPaste.ahk
To make it work you need:
1. AfterPaste.ahk - download directly here <a href='https://raw.githubusercontent.com/lintalist/Lintalist-AfterPaste/master/AfterPaste.ahk'>https://raw.githubusercontent.com/lintalist/Lintalist-AfterPaste/master/AfterPaste.ahk</a> ( Repository <a href='https://github.com/lintalist/Lintalist-AfterPaste'>https://github.com/lintalist/Lintalist-AfterPaste</a> )
2. nvda.ahk - download directly here <a href='https://raw.githubusercontent.com/hi5/nvda-autohotkey/master/nvda.ahk'>https://raw.githubusercontent.com/hi5/nvda-autohotkey/master/nvda.ahk</a>
3. NVDA Controller DLL files - download directly here <a href='http://www.nvda-project.org/nvdaControllerClient/nvdaControllerClient_20100219.7z'>http://www.nvda-project.org/nvdaControllerClient/nvdaControllerClient_20100219.7z</a> or here <a href='https://github.com/hi5/nvda-autohotkey/blob/master/nvdaControllerClient_20100219.7z?raw=true'>https://github.com/hi5/nvda-autohotkey/blob/master/nvdaControllerClient_20100219.7z?raw=true</a>
Place AfterPaste.ahk and nvda.ahk to the lintalist\include folder.
Place the nvdaControllerClient32.dll and nvdaControllerClient64.dll files to the Lintalist main folder where lintalist.ahk and lintalist.exe are also located.
Restart Lintalist.
If NVDA is running the text of the snippet should be spoken after it has been pasted.
Note that NVDA may speak additional characters if you are using a shorthand. The combination of NVDA and AutoHotkey does not always work 100% correct when it tries to delete the typed characters before replacing it with the snippet text.
You can modify AfterPaste.ahk to better suit your needs, this may include additional calls to the nvdaCancel() function or additional Sleep to allow Lintalist more time to paste the text.
If you are using scripts and use SendKey(SendMethod, ShortcutPaste) to paste the clipboard, it will automatically Speak it as well as the default code in AfterPaste.ahk takes care of it.
<h2 id='LintalistBundles'><a href='#LintalistBundles' class='headline'>Lintalist <em>Bundles</em></a></h2>
<b>Basic structure of a Lintalist bundle</b>
Although the preferred format for many applications that support bundles, taglists, clip-lists, or snippets appears to be XML or INI, the Lintalist Bundle Format is just a formatted text file which is easy to understand and edit.
Due to its YAML like structure* it is not as cumbersome as XML to edit in a regular everyday text editor. You can edit bundles using Lintalist as it has a <a href='#Editing'>built-in editor</a> which can <a href='#F4'>edit</a>, <a href='#F5'>copy</a>, <a href='#F6'>move</a>, <a href='#F7'>add</a>, or <a href='#F8'>remove</a> snippets from bundles or <a href='#F10'>create new bundles</a> from scratch. There are also some <a href='#BundleConvertors'>bundle converters</a> available to import data from other applications.
<em>* Inspired by Textpow http://textpow.rubyforge.org/svn/mm/manual.mm
A Lintalist bundle has some resemblance to YAML. [ For those interested in YAML and AutoHotkey, there is a parser available for AHK, see <a href='https://www.autohotkey.com/forum/viewtopic.php?t=60670'>www.autohotkey.com/forum/viewtopic.php?t=60670</a> (and others) ]</em>
The bundles (text-)files are stored in the <b>bundles\</b> directory. Once you start editing bundles, a backup will be made and copied to <b>bundles\backup\</b>.
<h2 id='SnippetsBundles'><a href='#SnippetsBundles' class='headline'>Snippets <em>&</em> Bundles</a></h2>
A bundle consists of one or more snippets. A snippet consists of five sections:
<table>
<thead>
<tr>
<th>Section</th>
<th>Description</th>
</tr>
</thead>
<tr><td><b>Part1</b> *1 </td><td>Text to paste into active application by pressing Enter, OR run script</td></tr>
<tr><td><b>Part2</b> *1 </td><td>Text to paste into active application by pressing Shift-Enter, OR run script</td></tr>
<tr><td><b>Hotkey</b> </td><td>Paste text from Part1 in active application without searching OR run script</td></tr>
<tr><td><b>Shorthand</b> </td><td>Expand abbreviations, similar to AutoHotkey. Paste text from Part1 in active application without searching OR run script.</td></tr>
<tr><td><b>Script</b> *2 </td><td>If a snippet has a script the Text from Part1 will <b>NOT</b> be pasted but instead the script will be run if Enter or the Shortcut-key keys are pressed.</td></tr>
</tbody>
</table>
What happens when you double click on an entry in the list is determined by a setting in the configuration menu. (<span class='setting'>DoubleClickSends</span> setting)
<span class='tip'>It is advised to always have some useful content in Part1, this will ensure you can always see what you select while searching, even it if the selected snippet runs a script.</span>
*1 This allows you to search for one thing while pasting another, useful for translations or help texts or ... whatever you can think of. Look at the countries.txt or ahk.txt bundles for examples.
Note: If the part you are trying to paste is empty it will revert to the other part if possible.
*2 The script is regular AutoHotkey code, see <a href='#LintalistBundles'>Bundle format</a> for more info.
Example of a Bundle with one Snippet: <span class='llcomment'>(Light blue texts are comments and are not part of the format)</span>
<table border='0' cellpadding='0' cellspacing='0' id='borderless'>
<tr valign='top'><td width='15%'><span class='llbundle'>BundleFormat:</span></td> <td width='40%'><span class='flex'>1</span></td><td><span class='llcomment'>; This value may change in future in case of a change in format, can not be changed in Bundle Editor</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>Name:</span></td> <td width='40%'><span class='flex'>CSS</span></td><td><span class='llcomment'>; Name used in Lintalist for Menu and Status-bar, can be changed in Bundle Editor</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>Description:</span></td> <td width='40%'><span class='flex'>Bundle for Lintalist</span></td><td><span class='llcomment'>; Can be used extra information, can be changed in Bundle Editor</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>Author:</span></td> <td width='40%'><span class='flex'>Author</span></td><td><span class='llcomment'>; Not actually used in Lintalist, can be changed in Bundle Editor</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>TitleMatch:</span></td> <td width='40%'><span class='flex'>.css</span></td><td><span class='llcomment'>; Comma separated list of partial window title matches</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>Patterns:</span></td><td></td> <td><span class='llcomment'>; Snippets start below, each new snippet starts with "- LLPart1"</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'>- LLPart1:</span></td> <td width='40%'><span class='flex'>border-radius: ^|px;</span></td><td><span class='llcomment'>; Start of snippet, text pasted with Enter or Double-click</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'> LLPart2:</span></td> <td width='40%'><span class='flex'>border-radius: [[input=Border radius]]px;
-moz-border-radius: [[input=Border radius]]px;
-webkit-border-radius: [[input=Border radius]]px;
</span></td><td><span class='llcomment'>; Text pasted with Shift-Enter</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'> LLKey:</span></td> <td width='40%'><span class='flex'>^+b</span></td><td><span class='llcomment'>; Shortcut, if pressed Text from LLPart1 will automatically be inserted OR script will be run if present</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'> LLShorthand:</span></td><td width='40%'><span class='flex'>bdrs</span></td><td><span class='llcomment'>; Type this shorthand followed by space or tab and Text from LLPart1 will automatically be inserted OR script will be run if present</span></td></tr>
<tr valign='top'><td width='15%'><span class='llbundle'> LLScript:</span></td> <td width='40%'><span class='flex'></span></td><td><span class='llcomment'>; If present, this AHK code will be run if the snippet is selected via Enter, shortcut or shorthand</span></td></tr>
</table>
<h3 id='Part1-2'><a href='#Part1-2' class='headline'>Part<em>1</em> & Part<em>2</em></a></h3>
As described above, a snippet consists of two parts which are both shown in the search results (if both are present).
While you can perfectly use Lintalist without ever having to use the Part2 of the snippet, it can be of value in a number of cases.
<b>Usage 1 - having two options to paste</b>
By having a snippet consisting of two parts, you can search for one type of information, but paste something else.
This is illustrated by the <a href="https://github.com/lintalist/lintalist-bundles/blob/master/countries.txt">Countries bundle here</a>.
In Part1 of the snippet you will find the official ISO name, and in Part2 the two letter alpha code, e.g GB for United Kingdom, CA for Canada. This lets you look up a country and either paste the official name by pressing <kbd>Enter</kbd>, or if you need it, the two letter alpha code by pressing <kbd>Shift</kbd>+<kbd>Enter</kbd>.
<table>
<tr>
<th>Paste Part1 (enter)</th>
<th>Paste Part2 (shift-enter)</th>
</tr>
<tr>
<td>United Kingdom</td>
<td>GB</td>
</tr>
<tr>
<td>Canada</td>
<td>CA</td>
</tr>
</table>
<b>Usage 2 - description / title</b>
You can also use Part2 as a short title to describe the purpose of Part1. In the Markdown bundle below Part2 is used as a description, that way you can for example search for 'bold' to find the bold snippet, this would not be possible without a useful description in Part2 as the markup code in Part1 does not have any useful information to search for.
<table>
<tr>
<th>Paste Part1 (enter)</th>
<th>Paste Part2 (shift-enter)</th>
</tr>
<tr>
<td>### ^|</td>
<td>Heading 3</td>
<tr>
<td>**[[selected]]**</td>
<td>Bold</td>
<tr>
<td>__[[selected]]__</td>
<td>Italic</td>
</tr>
</table>
If you have several very similar snippets in a bundle, you can add some info in Part2 of the snippet so the second column in the search results will help you find the correct one:
<table>
<tr>
<th>Paste Part1 (enter)</th>
<th>Paste Part2 (shift-enter)</th>
</tr>
<tr>
<td>very long snippet that looks similar to many other snippets in the bundle....</td>
<td>FAQ</td>
</tr>
<tr>
<td>very long snippet that looks similar to many other snippets in the bundle....</td>
<td>Email</td>
</tr>
<tr>
<td>very long snippet that looks similar to many other snippets in the bundle....</td>
<td>Excel</td>
</tr>
</table>
Another example would be time-sheet management. Often certain types of jobs or clients have special codes assigned to them. Instead of having to remember these codes you can simply create a bundle which would allow you to search for a clients name and paste the code in your time-sheet.
<table>
<tr>
<th>Paste Part1 (enter)</th>
<th>Paste Part2 (shift-enter)</th>
</tr>
<tr>
<td>1578A</td>
<td>John Smith</td>
</tr>
<tr>
<td>6335D</td>
<td>Ms. Jones</td>
</tr>
<tr>
<td>X-7685</td>
<td>Replaced plumbing</td>
</tr>
</table>
<h2 id='InteractiveBundleText'><a href='#InteractiveBundleText' class='headline'>Interactive bundle text (<em>or Plugins</em>)</a></h2>
Part1 and/or Part2 of a snippet can have special codes to insert specific data.
The following <code>Snippet Codes</code> (or plugins) are available.
You can develop your own if you learn to write AutoHotkey scripts, see <b><a href='https://github.com/lintalist/lintalist/blob/master/plugins/readme-howto.txt'>plugins\readme-howto.txt</a></b> for more info.
Reminder: You can also use <a href='#FormattedText'>Formatted Text Snippets</a> (html, markdown, image and RTF).
Plugins are processed as follows:
1. Local variables first
2. Process each plugin in the order they are presented in the snippet e.g. left to right.
3. If it is a nested plugin: the order is from the left to right AND from the inside out.
Consider the following example:
<blockquote class='boxed'>
This is <code>[[plugin1]]</code>
we continue with a triple nested plugin:
<code>[[plugin2 [[plugin2-1 [[plugin2-1-1]] ]] ]]</code>
and ending with
<code>[[plugin3]]</code>
</blockquote>
The plugins are processed in the following order:
1. [[plugin1]] is processed first
2. followed by [[plugin2-1-1]] followed by [[plugin2-1]] followed by [[plugin2]]
3. and finally [[plugin3]]
<b>Available plugins:</b>
<span class='tip' id='Brackets'><a href='#Brackets' class='headline'>[[..]] (Double square brackets) are used for plugin snippet notation. You can escape these double square brackets to prevent them being interpreted as a plugin:
<span class='highlight'>\[\]</span>, and <span class='highlight'>\]\]</span>
To escape [,], and | in the <em>options</em> of a plugin, use: <span class='highlight'><SB</span>, <span class='highlight'>>SB</span>, and <span class='highlight'>^SB</span>. See <span class='setting'>ParseEscaped</span> in settings.ini to change this.</a>
</span>
<table>
<thead>
<tr>
<th>Code & Parameters</th>
<th>Description</th>
</tr>
</thead>
<tr id='caret-plugin'><td><a href='#caret-plugin' class='headline'><code>^|</code></a> or <code>^$</code></td><td>Caret position after pasting.
Basic example: "Hello, this is a sample <code>^|</code>text"
The ^| (or ^$) code will be removed from the text and the caret will
be placed before the word `text`.
Alternative notation: <code>^$</code> useful when you want to use this in combination with the Choice plugin where the | character would cause a problem - <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/issues/124'>Discussion @ GH - #124</a>
If you paste a snippet into an editor which supports Multi-caret/edit you can use those in Lintalist snippets by placing multiple caret locations in your snippet. If you don't want to use MultiCaret simply avoid using multiple ^| in a Lintalist snippet.
Supported editors: Atom, Brackets, EverEdit, Komodo Edit, Sublime Text, TextAdept, UltraEdit 23+, Visual Studio Code editor. See <a href='https://github.com/lintalist/lintalist/blob/master/docs/MultiCaret.md'>docs/MultiCaret.md</a> for details.
<b>Notes:</b>
1. The caret position may be incorrect for snippets with Unicode characters, complex scripts, glyphs etc. (trial and error may work). It may also depend on how the target application handles (auto) indentation or reformats/prettyfies pasted code. In such cases a specific script may be able to resolve such issues - <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/issues/123'>Discussion @ GH - #123</a>
2. For screenreaders: the plugin consists of two characters, a Circumflex Accent followed by a Vertical bar or pipe symbol. A Circumflex Accent followed by a dollar sign is also permitted.</td></tr>
<tr id='c-plugin'><td><a href='#c-plugin' class='headline'><code>[[C=Char|Repeat]]</code></a></td><td>By default pasted texts are trimmed which means spaces and tabs will be trimmed from the snippet. You can use this plugin to insert one or more spaces and/or tabs at the beginning or end of a snippet. Or you can use it as a shorthand-code to insert a repeating text or character(s).
Basic example <code>[[C=-|30]]</code> insert 30 -'s
Use [[C=space]] or [[C=\s]] for a space, [[C=tab]] or [[C=\t]] for a tab, and [[C=enter]] or [[C=\n]] for a new line.
Neat trick: using a local variable or User input
<code>[[C=[[Var=localvar]]|10]]</code> Repeat the local variable 'localvar' 10 times.
<code>[[C=[[Input=Repeat which character|-]]|[[Input=How many times?|10]]]]</code> Repeat the entered character(s) 10 times.
Create a HTML table asking for Number of Columns and Rows:
<blockquote class='boxed'><table>
<b style='color:blue;'>[[C=</b><tr><b style='color:blue;'>[[C=</b><td></td><b style='color:red;'>|</b><b style='color:blue;'>[[Input=</b>How many columns?<b style='color:blue;'>]]]]</b></tr>
<b style='color:red;'>|</b><b style='color:blue;'>[[Input=</b>How many rows?<b style='color:blue;'>]]]]</b></table></blockquote></td></tr>
<tr id='calc-plugin'><td><a href='#calc-plugin' class='headline'><code>[[Calc=]]</code></a> *2</td><td>Evaluation of the math expressions - see <a href='#Calc'>documentation below</a>.</td></tr>
<tr id='calendar-plugin'><td><a href='#calendar-plugin' class='headline'><code>[[Calendar=Format|LCID|to]]</code></a></td><td>Displays a calendar window to allow you to select a date in a specific format (see <a href='#datetime-plugin'>DateTime</a> below).
Basic example <code>[[Calendar=dd-MMM-yyyy]]</code> --> Select a date and it will be inserted like so: 25-Jan-2011
Specify an LCID. If you do not define one, the current user's locale is used to format the Date string. To use the system's locale instead, specify LSys. To use a specific locale, specify the letter L followed by a hexadecimal or decimal locale identifier (LCID). You can find a list of Locale IDs assigned by Microsoft here <a href='https://msdn.microsoft.com/goglobal/bb964664.aspx'>msdn.microsoft.com/goglobal/bb964664.aspx</a>
If you use a date range (e.g. start/end date) the word " to " is automatically inserted between the two dates, if you want something else such as another language or character (" - ") simply specify this as the third parameter:
<code>[[Calendar=dd-MMM-yyyy|| - ]]</code>
</td></tr>
<tr id='choice-plugin'><td><a href='#choice-plugin' class='headline'><code>[[Choice=item1|item2|..]]</code></a></td><td>Selected an item from a list.
The options are delimited by a | character.
Basic example <code>[[Choice=Red|Green|Blue]]</code> inserts the selected colour in the text.
When the first option starts with a question mark (?), the first option will be removed from the list and shown as text in the Choice GUI. This can serve as a hint or reminder what the Choice is about.
Example: <code>[[Choice=<b class='highlight'>?</b>Favourite colour|Red|Green|Blue]]</code>. Same as above only the GUI will show "Favourite colour" in the GUI above the options.
When the first option starts with a exclamation mark (!), you can filter the options as you type (similar to Lintalist main search).
Example: <code>[[Choice=<b class='highlight'>?!</b>Favourite colour|Red|Green|Blue]]</code>. Same as above only the GUI will show "Favourite colour" in the GUI above the options and a search box so you can filter the options to choose from. You can ommit the question option, so this is also valid:
<code>[[Choice=<b class='highlight'>!</b>|Red|Green|Blue]]</code>
The order of <b>?!</b> doesn't matter.
<b>Optional:</b> Toggle 'Select by digit' to use <kbd>Alt</kbd>+<kbd>1</kbd>..<kbd>0</kbd> to select an option from the first 10 items;
<span class='setting'>SelectByDigitTyping</span> "hidden" setting 0 or 1 in <span class='setting'>session.ini</span> (in the Choice section) to be able to use just digit (<kbd>1</kbd>..<kbd>0</kbd>) to select vs alt+digit. <span class='discussion'></span><a href='https://github.com/lintalist/lintalist/pull/332#issuecomment-3693914708'>Discussion @ GH - #332</a>
</td></tr>
<tr id='clipboard-plugin'><td><a href='#clipboard-plugin' class='headline'><code>[[Clipboard]]</code></a> *1</td><td>Insert current Clipboard content.
* Additional parameters are available, see <a href='#ClipEx'>Extending Clipboard & Selected text</a>.</td></tr>
<tr id='comment-plugin'><td><a href='#comment-plugin' class='headline'><code>[[Comment=]]</code></a></td><td>Add a comment to a snippet. The entire comment will be removed from the snippet before it is pasted. As a reminder: You can also use <a href='#Part1-2'>Part2</a> of a snippet for "hints" or notes".
Example:
<code>[[Comment=Add your comment text here which can be searched but all of it will be removed before pasting]]</code></td></tr>
<tr id='counter-plugin'><td><a href='#counter-plugin' class='headline'><code>[[Counter=Name|Value|Reset]]</code></a></td><td>You can use multiple counters <b>across bundles</b>.
Basic example <code>[[Counter=InvoiceNumber]]</code> --> increment by one and insert value of InvoiceNumber.
By default it will increment the counter by one, you can change that by specifying the Value.
<code>[[Counter=InvoiceNumber|5]]</code> Add 5 and insert.
<code>text … [[counter=cName]] … text … 2nd instance [[counter=cName<b>|0</b>]] with same value</code>
These counters are saved between sessions and stored in settings.ini
You can manage these counters (add, edit, delete) via the tray menu option: Manage counters.
<b>Tips</b>:
1. if you want to use the same counter multiple times in a snippet without incrementation simply "Add zero" (<b>|0</b>) for the second and subsequent instances.
2. if a counter is not created/managed using the "Manage counters" tool the unknown counter will be automatically created. This way you can create counters 'on the fly' using for example the <code>[[Input=]]</code> plugin.
3. You can (re)set a counter each time you start a snippet by using the <b>|reset</b> option:
<code>[[Counter=CounterName|2|0]]</code> would restart the counter at 0 and +2. This can be useful in a SplitRepeat for example so you can create a numbered list. (see the <a href='https://github.com/lintalist/lintalist-bundles/blob/master/markdown.txt'>MarkDown bundle, Ordered list snippet</a>)
</td></tr>
<tr id='datetime-plugin'><td><a href='#datetime-plugin' class='headline'><code>[[DateTime=Format|Value|TimeUnits|LCID|RollOver]]</code></a></td><td>Insert current Date and/or Time using the FormatTime options, <a href='https://www.autohotkey.com/docs/v1/commands/FormatTime.htm'>autohotkey.com/docs/v1/commands/FormatTime.htm</a>
(Date & Time formats, may be dependent on your user locale).
Basic example <code>[[DateTime=dd-MMM-yyyy]]</code> --> 25-Jan-2011 (Todays date)
You can also perform some calculations, example:
<code>[[DateTime=dd-MMM-yyyy|5|Days]]</code> --> 30-Jan-2011, 5 days from today.
TimeUnits can be either Seconds, Minutes, Hours, or Days.
Specify an <b>LCID</b>, see Calendar above. Example: <code>[[DateTime=dd MMMM yyyy|||L1036]]</code> --> show month in French.
The LCID can be decimal or hexadecimal e.g. L1036 and L0x040C are the same: French.
<b>RollOver</b>: Allows a date/time to roll over. Format: Three letter abbreviation in <em>English</em> (sun, mon, tue, wed, thu, fri, sat) <em>OR</em> 1-digit day(s) of the week (1-7). 1 is Sunday in all locales.
Example: <code>Business hours: [[DateTime=dddd, MMMM d, yyyy|1|Days||mon-fri]] 8:00 AM - 10:00 AM</code> (or 2-6 instead of mon-fri when using digits).
If today would be Friday, the result would show Monday as next available day and date
<span class='discussion'></span><a href='https://github.com/lintalist/lintalist/pull/295'>Discussion @ GH - #295</a>
</td></tr>
<tr id='file-plugin'><td><a href='#file-plugin' class='headline'><code>[[File=Filename|select|clean]]</code></a></td><td>Will insert text from specified file into the text,
either full path or relative to the Lintalist directory.
Basic example <code>[[File=c:\file.txt]]</code> inserts content from that file into the text.
The file plugin has two options <code><i>|Select</i></code> and <code><i>|Clean</i></code>.
<code>|Select</code>: if you want to select a file to use add <code><i>|Select</i></code>. The "filename" is now used as the directory where you want the Select File dialog to start. If you leave it empty it will start in the Lintalist folder, you can use relative paths (..)
Basic example: <code>[[File=..|select]]</code> --> select a text file in the parent folder of Lintalist.
<code>|Clean</code>: if you know the text file has the following characters in them |[] <b>AND</b> you are using the File plugin as an input for another plugin you need to tell Lintalist to remove the []| characters by using the |Clean option. Otherwise the plugin using the file as an input will most likely fail.
The order of Select and Clean doesn't matter, you can use one or both at the same time.
</td></tr>
<tr id='filelist-plugin'><td><a href='#filelist-plugin' class='headline'><code>[[FileList=?Options|path]]</code></a></td><td>Return a delimited list of files from one or more folders. A useful companion to <code>[[Choice]]</code> if you want to select a specific file.
Both asterisks and question marks are supported as wildcards, use a ; (semicolon) for multiple wildcards:
folder\*.jpg;*.png
will return a list of all JPG and PNG files in a folder.
Options:
D : Include directories (folders).
F : Include files. If both F and D are omitted, files are included but not folders.
R : Recurse into subdirectories (subfolders). If R is omitted, files and folders in subfolders are not included.
P : Use full file path, if omitted only the filenames are returned
Delimiter to use, default is a pipe (|) character, alternatively use:
SC: c comma
SN: n newline
ST: t tab
T : use path from active panel in Total Commander (assuming only one instance is active)
E : use path from current folder in Explorer (assuming only one instance is active)
W : current window title path (some programs show full path in Title, we can use this)
U : Uri paths use / not \