-
Notifications
You must be signed in to change notification settings - Fork 11
/
HY-NEWS
3786 lines (2735 loc) · 167 KB
/
HY-NEWS
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
* What's New in GNU Hyperbole
by Bob Weiner
===========================================================================
* V9.0.2pre
===========================================================================
===========================================================================
* V9.0.1
===========================================================================
** ACE WINDOW PACKAGE INTEGRATION - fast window and buffer switching
*** After installing the ace-window package and loading Hyperbole, execute
(hkey-ace-window-setup "\M-o") to enable the following capabilities:
*** Fast Window Links: The hkey-window-link command quickly creates links
to other windows:
{M-o w <window>} - creates an explicit button linked to point in <window>
{C-u M-o w <window>} - creates an unnamed implicit button linked to point
in <window>
{M-1 M-o w <window>} - creates a named implicit button linked to point
in <window>
See "(hyperbole)Create Link Button".
** ACTION AND ASSIST (SMART) KEYS (See "(hyperbole)Smart Keys").
*** Angle Bracket and Braces Thing Selection: In text and fundamental modes,
an Action Key press on an angle bracket or a curly brace selects the
region between a matching pair. See "(hyperbole)Smart Key Thing
Selection".
*** Drag Button Referents to Specific Windows: Just as you previously could
drag Dired or Buffer Menu items to display in a specific window, you
can now do the same with Hyperbole Buttons. Action or Assist Key drag
from a Hyperbole button and release in another window where you want
the button's referent (or the result of its action) displayed. If you
release the Smart Key outside of an Emacs window, the referent is
displayed in a new frame. See "(hyperbole)Displaying Items".
Visual pulsing of the source line and the destination buffer highlights
the transfer taking place (hmouse-pulse-flag controls this).
Dragging a button to a modeline splits the window of the modeline and
displays the referent in the leftmost or uppermost of the split windows.
*** Drag to Create Implicit Link Buttons: An Assist Mouse Key drag across
windows (when not starting from a draggable item) creates an implicit
link button with an action type determined by the referent at the point
of button release. This parallels the same Action Mouse Key drag which
creates explicit link buttons. See "(hyperbole)creating implicit
links".
Previously this drag would swap buffers in windows. Now you must drag
from open space in a modeline of the depress window to the buffer text
in the release window to swap buffers in windows.
Alternatively, with two windows in a frame, you can create an implicit
link button from point to the point of the other buffer with {C-h h i l}.
*** Hyperbole Symbol Tags: Hyperbole now includes a pre-built TAGS file so
that an Action Key press on any Hyperbole symbol jumps to its
definition without the need for any additional support. This also
works on Hyperbole type names (which have a hidden prefix) in a help
buffer where an Action Key press displays the type definition.
*** Lisp Load, Autoload and Require Expressions: Action Key press on any
named target in such expressions displays the associated library.
*** Lisp Action Button Help: Action Buttons that utilize regular Lisp
functions (rather than Hyperbole Action Types) can now have :help
functions run with a press of the Assist Key on such buttons. See
"(hyperbole)Action Buttons".
*** Smart Dired: Action Key subdirectory selection at point now works on
any dired header line, not just the first one. Use {i} to insert
multiple subdirectories in Dired mode. Smart Key end-of-line behavior
is no longer specified in Dired mode but handled globally for
consistency across modes. See "(hyperbole)Smart Key - Dired Mode".
** ACTION TYPES (See "(hyperbole)Action Types").
*** display-boolean, display-value, display-variable: Made all of these
interactive, so can be used as button actypes. See "(hyperbole)
actypes display-boolean".
*** Long Action Buttons: The length limit on action buttons has been removed
to allow for long, multi-line sexpressions.
** DOCUMENTATION
*** Hyperbole Concepts: New writeup in Koutline format for those who
want a quick read about how Hyperbole concepts all interrelate.
View it with {C-h h d c}.
*** Action Types: Add newer types and updated existing doc summaries
in the Hyperbole manual. See "(hyperbole)Action Types".
*** Doc Viewing: Updated to display many files from the Doc> menu in Org
mode, so can cycle through expanding and collapsing entries with TAB
when point is at the beginning of the buffer, allowing you to view
just the sections of interest. View minor mode is also enabled so
you can scroll forward and backward with SPC and DEL.
This includes DEMO, FAST-DEMO, HY-ABOUT, HY-NEWS and the Hyperbole
Files MANIFEST.
*** Emacs 2023 Talk Videos:
- Hyperbole Amps Up Emacs: Org slide file is included in
"HY-TALK/HYPERAMP.org" with the video at
"https://emacsconf.org/2023/talks/hyperamp/".
- Koutline for Stream of Thought Journaling: The video is at
"https://emacsconf.org/2023/talks/koutline/".
- What I learned by writing test cases for GNU Hyperbole: The video
is at "https://emacsconf.org/2023/talks/test/".
*** Emacs 2022 Talk Videos:
- Hyperbole and Org Mode: Org slide file is included in
"HY-TALK/HYPERORG.org" with the video at
"https://emacsconf.org/2022/talks/hyperorg/".
- Linking Personal Info with Implicit Buttons: The video is at
"https://emacsconf.org/2022/talks/buttons/".
- Build a Zettelkasten with HyRolo: The video is at
"https://emacsconf.org/2022/talks/rolodex/".
*** FAST-DEMO: Add <hyperbole-run-tests hyrolo> ERT multiple test run
example.
*** New Menu Key Doc: Documented these Hyperbole minibuffer menu keys:
- {Q} always quits from the menu without selecting anything
- {X} both quits from the menu and disables Hyperbole minor
mode; {C-h h} re-enables it. See "(hyperbole)menu,
entry/exit commands".
*** Updated 150-page Reference Manual: Includes multiple indexes for easy
cross-referencing, Info viewer version and PDF for printing. View it:
- with the Emacs Info reader: {C-h h d i}.
- locally with a web browser: <browse-url "man/hyperbole.html">
- in pdf form: "man/hyperbole.pdf".
Some of the updates include:
**** HyRolo Searching: Update this section with doc on auto-expansion and
how to hide entries again.
**** Ibut Menu: Document in the manual, notably the new Ibut/Create menu
item. See "(hyperbole)menu, Ibut/Create". For the Ibut/Link menu
item, see "(hyperbole)menu, Ibut/Link".
**** Implicit Button Types: Add doc for 'hib-python-traceback'
and 'hyrolo-stuck-msg'. See "(hyperbole)Implicit Button Types".
**** Link Menu Items: With two windows on screen, link from source window
point to referent window point. Do a similar thing when more windows
are on screen via an Action Mouse Key drag between windows. See
"(hyperbole)Smart Mouse Drags between Windows".
**** Manual Glossary: Added Ace Window, Consult, Org Mode, and Org Roam
entries. See "(hyperbole)Glossary".
**** Smart Key - Org Mode: Expanded with doc for more extensive behavior.
See "(hyperbole)Smart Key - Org Mode".
*** README.md: Unify this as the only readme file and remove "README".
** EXPLICIT BUTTONS (See "(hyperbole)Explicit Buttons").
*** Ebut/Link Menu Item {C-h h e l}: Inserts a named ebutton that links to
point in another window. See "(hyperbole)menu item, Ebut/Link".
** GLOBAL BUTTONS (See "(hyperbole)Global Buttons").
*** Gbut/Link Menu Item: A single name creates a new global link button
to point. See "(hyperbole)menu item, Gbut/Link".
*** Auto Save: Automatically save the global button file after any edit.
** HYCONTROL (See "(hyperbole)HyControl").
*** I/J/K/M Key Bindings: In Window Control mode, move directionally
(based on QUERTY keyboard layout) among windows in the selected frame.
In Frame Control mode, move directionally among active frames. These
keys utilize and prompt to install the windmove and framemove packages
if not installed. See "(hyperbole)I/J/K/M".
** HYPERBOLE SYSTEM (See "(hyperbole)").
*** Any Colorized Display: Face display and colorization of Hyperbole
buttons now works on any display capable of displaying colors. See
"(hyperbole)Button Colors".
*** Create Buttons in Current Buffer: Stop prompting for a source buffer
when creating a Hyperbole button. Always use the current buffer and
point. See "(hyperbole)Creation".
*** DuckDuckGo Web Search: {C-h h f w k} runs a DuckDuckGo web search.
*** Hyperbole Keys Defer to Current Modes: Hyperbole bindings of {C-c RET},
{C-c .}, {C-c @}, and {C-c /} defer to any major mode, like org-mode,
outline-mode or kotl-mode that binds them to other commands. This also
works for outline-minor-mode.
*** Improved Button Help: {C-h A} now says whether a button is explicit or
implicit. For implicit buttons, it displays the doc from both its
implicit button type and its associated action type.
{C-h A} now also works on Emacs push-buttons and text property
buttons, displaying their attributes and associated action. See
"(hyperbole)Smart Key help".
*** Flymake Lint Warning Display: The new "hsys-flymake" library provides
commands to display the flymake warning at point as well as the full list
of warnings for the current buffer. See "(hyperbole)Smart Key - Flymake
Mode" for details.
*** Makefile (eln): Use echo target for showing build info as part of the
eln build.
(echo): Show Emacs location and version in build environment
info.
(lint): Use "package-lint" to lint Hyperbole source code.
*** mhtml-mode Markup Selection: Hyperbole's matching markup pair selection,
copying and movement now works with Emacs' builtin mhtml-mode. See
"(hyperbole)HTML tag pair".
*** Native Compilation: Hyperbole now may be natively compiled (.eln files).
It works around an Emacs bug where async native comp of a package being
installed does not load "hyperbole-autoloads.el". When building
Hyperbole without a package manager, 'make eln' now builds it natively.
*** Natively Compiled Functions as Action Types: Now may be used as
Hyperbole button action types. See "(hyperbole)Action Types".
*** Warnings Removed: Almost all byte-compiler and native compiler warnings
have been eliminated when building the Hyperbole package. None of the
remaining warnings should affect use of Hyperbole. Most open Hyperbole
issues have also been resolved.
*** XEmacs: Removed old XEmacs-compatibility code; everyone should use GNU
Emacs nowadays.
** HYROLO (See "(hyperbole)HyRolo").
*** Koutline and Markdown File Support: The `hyrolo-file-list' can now
contain Koutline or Markdown files and will search their outline entries
just like it does for Org and Emacs outline files. The `markdown-mode'
package will be auto-installed if a Markdown file is searched by HyRolo.
See "(hyperbole)HyRolo Concepts".
*** hyrolo-file-list Support for File Wildcards, Variables and Dirs:
The `hyrolo-file-list' variable that HyRolo uses to determine the files
to search for pattern matches may not contain file patterns itself.
If you include file wildcards in pathnames and `find-file-wildcards' is
non-nil (the default), they will be expanded into matching files
internally by HyRolo. See "(emacs)Wildcards".
If you include an Environment variable or Emacs Lisp variable with the
${var} format in a path, it will be resolved prior to searching the path.
Variables with values that include multiple paths, e.g. PATH, are resolved
to the first existing entry that matches. See "(hyperbole)pathname".
If you include an existing directory (invalid ones are ignored) in your
hyrolo list, hyrolo will search recursively across all of its files
that match `hyrolo-file-suffix-regexp'. See `hpath.el#hpath:expand-list'.
HyRolo will display a detailed error list if any invalid file type is
included in the `hyrolo-file-list' after expansion. See
`hyrolo-any-file-type-problem-p'.
*** *HyRolo* Match Buffer Key Bindings:
Improved movement keys:
- {TAB} Move to next search match; works across all supported file types
- {b} Move backward at the same outline level
- {f} Move forward at the same outline level
- {n} Move to the next visible outline heading
- {p} Move to the previous visible outline heading
- {u} Move up a heading level
- {,} Move to the beginning of the current entry
- {.} Move to the end of the current entry
- {[} Move to previous @loc> line of previous file header
- {]} Move to next @loc> line of next file header
Improved hide/show commands now work when in file headers:
- {h} Hide the rest of the file header and matches after this line
- {s} Show all of the file header and matches
See "(hyperbole)HyRolo Keys".
*** Koutline Fast Search: Koutlines may now be included in `hyrolo-file-list'
and individual cells extracted properly with any HyRolo query. Then the
interactive commands:
{t} show the top-level (highest matching level) matches
{o} show an outline of matches
{s} show/expand current match
{h} hide current match
{f/b/n/p} move to another match
all work on Koutline cells displayed in the match buffer. See
"(hyperbole)HyRolo Concepts".
*** Match Buffer Name Change: Changed match buffer name from "*Hyperbole
Rolo*" to "*HyRolo*".
*** Auto-Expand Hidden Text: Whenever point moves into a hidden/invisible part
of the *HyRolo* buffer, the entire tree of entries below that point is
auto-expanded/shown. Presently, there is no auto-hide functionality.
You must press {h} to hide entries or an entire file of matches when in
the file header.
*** Editing Entries Jumps to Current Position: The {e} command in the *HyRolo*
match buffer now lets you edit the current point within the entry's source
buffer, rather than jumping to the start of the entry.
*** New HyRolo menu items ConsultFind and HelmFind: These appear when you
independently load the `consult' or `helm-org-rifle' package.
These menu items then use the related interactive search functions to
search over the HyRolo file list.
ConsultFind utilizes `consult-ripgrep' or `consult-grep'. HelmFind uses
the helm-org-rifle package and searches over .org and .otl files
exclusively. See "(hyperbole)ConsultFind".
*** .otl and .outl Suffixed Files: Setup to auto-invoke `outline-mode'.
*** hyrolo-date-format Empty String: Setting this variable to an empty string
will disable adding and updating modification dates in HyRolo entries.
*** hyrolo-hdr-and-entry-regexp: Rename to 'hyrolo-hdr-and-entry-regexp' and
in 'hyrolo-mode' extend its value to include all multiple trailing whitespace
chars after the entry delimiter.
Make variable `hyrolo-entry-regexp' which does not match to file headers.
** IMPLICIT BUTTONS (See "(hyperbole)Implicit Buttons").
*** Action Button Result Display: Action buttons now display in the
minibuffer the result of evaluating any type of action expression,
using Lisp readable values.
*** Compilation and Grep Error Lines: Error lines in the Emacs Regression
Test buffer, *ert*, are now supported, as well as the 'Compiling
<file>', 'Loading <file>' and 'In <function>' lines as well as source
line references from Emacs Lisp native compilation within the
*Async-native-compile-log* buffer.
Added support for ERT "Test <symbol>" lines to jump to the def of the
symbol and for symbol and pathname references from backtraces in ERT
output.
Added jumping to the referenced location from Ruby traceback stack
messages.
*** Emacs Regression Test Runs: New 'hyperbole-run-test-definition' implicit
button type defined in "hypb-ert.el". An Action Key press on the first
line of an ert test definition (ert-deftest) within the test name,
evaluates the definition and runs the test; this ensures that the latest
version is always run. An Assist Key press does likewise but runs the
test with edebug, stepping through it. This also works for tests defined
with `ert-deftest-async' from the "ert-async" package. See also "#Action
Link Types to Run Tests".
With the optional package, "ert-results", the Smart Keys can be used
within the ERT results buffer to filter the display and to show the
documentation for each test. See "(hyperbole)Smart Key - ERT Results
Mode".
*** Highlighting of Ibut Names: New `property:ibut-face' used to highlight
any <[name]> prefixing an implicit button. All hproperty functions now
support this face as well as the `hproperty:but-face' used for explicit
buttons.
*** Info Nodes: Better handling of embedded double quotes and added support
for HTML " quoting.
*** Improved # and Embedded Space Path Handling: If a path exists, don't
treat its # hash marks as section markers, notably for #autosave# files.
Allow for unquoted filenames with spaces in them in ls listings in shell
buffers (assume files are tab-delimited).
*** Ibut/Create Menu Item {C-h h i c}: Creates a named/labeled implicit
button of any type. Separates the name and the implicit button with
" - ". See "(hyperbole)menu item, Ibut/Create".
*** Ibut/Link Menu Item {C-h h i l} - Inserts an ibutton that links to point
in another window. With a C-u prefix argument, prompts for a name as
well. See "(hyperbole)menu item, Ibut/Link".
*** Jump to Lisp Identifier Definition in More Buffers: Lisp identifiers are
now recognized as programming etags in the *Warnings* byte-compilation
buffer and in Flymake log and diagnostics buffers.
*** Path Implicit Buttons: Much improved relative path handling, including
expanding into executable paths when pathname is prefixed by ! or &,
and handling info paths outside `Info-directory-list', like
"man/hyperbole.info". Also, prioritize 'load-path' and 'exec-path' above
'Info-directory-list' within 'hpath:variables' when expanding pathnames.
Remove outdated 'Info-directory' from 'hpath:variables' as well.
Automatically invoke `outline-mode' on files with ".outl" suffix;
previously, only ".otl" suffixes did this.
*** Read-only Context Errors: Trigger errors when trying to create an
implicit button with point on read-only text, read-only Org contexts,
explicit buttons, or emacs push-buttons.
*** Relative Info Paths: Info files with relative pathnames outside of the
`Info-directory-list' now resolve properly, e.g. "man/hyperbole.info".
*** Table of Contents Sections: Hyperbole now recognizes TOCs in any text
derived major mode with the text-toc implicit button type. An Action
Key press on a line with a section name displays the section according
to the Hyperbole referent display setting, typically leaving the TOC
untouched in the selected window. This also works in Internet standard
RFC buffers.
*** Youtube Snippet Links: Compact Action Buttons to play parts or whole
Youtube videos and to search for videos by keyword. See
"hsys-youtube.el".
** KOUTLINER (See "(hyperbole)Koutliner").
*** New Klink Format: Hash character, #, may now be used to separate a
pathname from a Koutline cell reference. Both <koutline-path#cell-ref> and
"koutline-path#cell-ref" work, e.g. "${hyperb:dir}/kotl/EXAMPLE.kotl#2a"
*** Link to Cell Headings: A cell heading is a string at the beginning of the
editable portion of a cell that ends with a colon or a newline. Links
to complete heading names now work: "${hyperb:dir}/kotl/EXAMPLE.kotl#Klinks"
*** {M-S-<left>} and {M-S-<right>}: Org compatibility - Add tree promote and
demote commands to these keys (same as existing {M-<left>} and
{M-<right>} keys). See "(hyperbole)Promoting and Demoting".
*** {C-c s} Deletes Surrounding Whitespace: When a cell is split, it now deletes
surrounding whitespace before performing the split.
*** Star Outline Import Indented Headings: Added support for Emacs/Org
star-based headings whose stars do not start at the beginning of a line,
i.e. are indented. See "(hyperbole)Inserting and Importing".
*** Transpose Lines Down: Add 'kotl-mode:transpose-lines-down' command.
** MENUS (See "(hyperbole)Menus").
*** Minibuffer Menu Changes:
- Instant Link Creation:
Ebut/Link - Inserts a named ebutton that links to point in another
window. See "(hyperbole)menu item, Ebut/Link".
Gbut/Link - A single name creates a new global link button to point.
See "(hyperbole)menu item, Gbut/Link".
Ibut/Link - Inserts an ibutton that links to point in another window.
With a C-u prefix argument, prompts for a name as well. See
"(hyperbole)menu item, Ibut/Link".
- Reload Menus and Smart Keys: Action Key press on top-level menu prefix
reloads Hyperbole minibuffer menus and Smart Key handlers to reflect
any recent edits.
- Multi-line Menus: When a menu line is too long for the screen, it is
automatically split into multiple lines and aligned by column for
ease of access.
*** Move Prefix Arg Number of Items: {M-b} and {M-f} move backward and
forward by the number of items specified by any given prefix argument,
as do {TAB} and {Shift-TAB}. See "(hyperbole)minibuffer menu".
** PROGRAMMING INTERFACE CHANGES (See "(hyperbole)Embedding Hyperbole").
*** hui:ebut-link-directly:
hui:gbut-link-directly:
hui:ibut-link-directly: Instant direct Hyperbole links.
*** hypb:mail-address-tld-regexp: Renamed from 'hypb-mail-address-tld-regexp'.
hypb:mail-address-regexp: Renamed from 'hypb-mail-address-regexp'.
hypb:mail-address-mode-list: Renamed from 'mail-address-mode-list'.
Make all of these variables have a common prefix.
*** (hypb:devdocs-lookup): Install and load devdocs package and then call its
`devdocs-lookup' function.
*** (hpath:find): Fix off-by-one (too high) error with relative line numbers.
A relative line number of 1 means the first line, not the line after the
first line, i.e. don't move at all, which of course can be left off but
that way, a line number of 2 goes to the second line, which is more
natural than moving down 2 lines, as a call to forward-line would. This
matches up with absolute line numbering, as well.
*** (hpath:resolve): Add to resolve path variables without doing a path
expand.
*** (hsys-org-meta-return): Centralize sharing of {M-RET} key with Org mode.
*** (hypb:require-package): Add to install a package, if necessary, and
require its library with the same name.
*** (hypb:helm-info): Add to require helm package and call helm-info.
*** (action:help): Allow for Action Button Assist Key :help functions, even
if the action button type is not a Hyperbole type, i.e. is a regular
function.
*** (hproperty:but-clear-all): Clears all colorized Hyperbole button
faces from the current buffer.
(hproperty:but-clear): Renamed from hproperty:but-delete.
*** (hyperbole-update-menus): Can now be called interactively to update
the Hyperbole menubar and minibuffer menus if any edits are made.
*** (hyrolo-consult-grep): Interactively grep or ripgrep the HyRolo file
list, with live in-buffer display using the automatically installed
consult package.
*** (hyrolo-helm-org-rifle): Interactively match to HyRolo file list
entries using the automatically installed helm-org-rifle package.
(hyrolo-helm-org-rifle-directory): Behaves similarly but searches
over `org-directory'.
*** (hyrolo-outline-*): Add hyrolo-specific versions of all
`outline-minor-mode' commands to support HyRolo searches across multiple
file types.
*** (hyrolo-funcall-match, hyrolo-map-matches): Add these functions to
wrap function calls in the HyRolo display matches buffer that require the
original major mode of the location, e.g. outline commands.
*** (hyrolo-map-logic): Add doc for last arg, whole-buffer-flag.
*** (hyrolo-outline-minor-mode): Define and enable in `hyrolo-mode'.
*** (hyrolo-grep-file): Remove `backward-search-limit' as may miss prior
entry starting positions.
*** (hyrolo-add-match): Remove first arg, `hyrolo-matches-buffer' and
use global `hyrolo-display-buffer' instead.
*** (hyrolo-auto-mode-alist): Add new variable to control major modes used
by files read in for HyRolo searches.
(hypb:major-mode-from-file-name): Rename to
`hyrolo-major-mode-from-file-name' and move to "hyrolo.el". Prefix
`auto-mode-alist' values with those in `hyrolo-auto-mode-alist'.
(hyrolo-logic): Change call from `hyrolo-find-file' to
`hyrolo-find-file-noselect' to enable use of `hyrolo-auto-mode-alist'.
*** hsys-org-roam.el: This library supports interactively grepping over
org-roam files with live in-buffer display. It uses the automatically
installed consult package when `hsys-org-roam-consult-grep' is invoked.
*** (hsys-org-consult-grep): Add to search `org-directory' using consult
grep.
*** (hattr:list): Now also returns the attributes of an Emacs push-button
using `hattr:emacs-button-attributes', as recognized by
`hattr:emacs-button-is-p'.
*** (hui:ibut-create, ibut:create, ibut:delimit, ibut:operate):
Add interactive, named/labeled implicit button creation. For
`ibut:create', improve doc and add but-sym arg which can supply all
other arguments in its properties.
*** (ibut:label-key-match): Return filtered list of ibut labels.
*** (ibut:label-sort-instances): Sort label key instance numbers.
*** (ibut:label-instances-regexp): Rename to `ibut:name-instances-regexp'.
(ibut:label-regexp): Rename to `ibut:name-regexp'.
*** (ebut:label-start, ebut:label-end): Rename from `ebut:start' and
`ebut:end'.
*** (hpath:delimited-possible-path): Add support for HTML "
quoting and embedded double quotes.
*** (hargs:read): Add support for 'i' interactive spec (ignored arg).
*** (set:replace-key-value): Rename from `set:replace'.
(set:replace): Now replaces a non-keyed old-value with a new value.
(set:replace-member): Added this new function to replace an existing
set member or to add a new one if no matching existing member.
(set:members): Now keeps members in stable order; previously returned
in reverse order.
*** (hycontrol-framemove-*): Add hycontrol-framemove-direction,
hycontrol-framemove-up, hycontrol-framemove-left,
hycontrol-framemove-right, and hycontrol-framemove-down to move among
active frames.
*** (kimport:initialize): Add optional `erase-flag' arg to erase buffer
before importing elements. And use in all kimport commands.
*** (hhist:pop): Renamed from `hhist:remove'.
*** (hypb:activate-interaction-log-mode): Add to configure and enable the
interaction-log package for use with Hyperbole. It displays a
font-locked log of Emacs keys, commands and Hyperbole minibuffer menu
items executed. Useful in demo videos or presentations.
*** (hui:menu-exit-hyperbole): Renamed from `hui:hypb-exit'.
*** (hui:menu-choose): Renamed from `hui:menu-select'.
*** (hyperbole-web-search): Added optional `return-search-expr-flag' to
return search expression rather than doing the search, to build up more
involved search commands.
*** (hypb:replace-match-string): Removed this unused function.
*** (hyrolo-verify, hyrolo-isearch, hyrolo-next-match,
hyrolo-previous-match, hyrolo-isearch-for-regexp): Added support for
use in main HyRolo file, not just the match buffer.
*** (hyrolo-find-file-noselect-function): Added so can customize low-level
function used to read in each file searched by HyRolo.
*** (hyrolo-previous-match): Changed so this can be used in a predicate
when a match is found.
*** (hyrolo-grep): Added support for `outline-regexp' and `outline-level'
variables from multiple file types.
(hyrolo-mode-outline-level): Added and used in `hyrolo-mode'.
(hyrolo-mode): Set the local value of `outline-level' to
`hyrolo-mode-outline-level' and define that function to support star
outlines and Koutlines. Also, made `hyrolo-hdr-and-entry-regexp' local and set
it to its default value, after which it may be modified.
*** (hyrolo-fgrep-file, hyrolo-grep-file, hyrolo-fgrep, hyrolo-grep,
hyrolo-word): Added optional `headline-only' argument to limit searches
to headlines.
*** (hyrolo-next-regexp-match, hyrolo-next-match-function): Added to allow
for different hyrolo entry matching functions.
*** (hyrolo-next-visible-heading): Rename to `hyrolo-outline-next-visible-heading'.
*** (ibtype:test-p, ibtype:act): Add these to mirror actype functions.
(ibtype:elisp-symbol): Add alias similar to existing actype one. So
that (ibtype:act <ibtype-sym-or-name>) executes the ibtype action if the
current buffer context supports it.
*** (ibut:at-p): Fixed to return nil if name and lbl-key are both nil. Also
added support for <> and {} ibut delimiters.
*** (smart-push-button): Added and referenced in `hkey-help' to trigger
push-button-specific help output.
*** (smart-emacs-lisp-mode-p ,smart-lisp-mode-p): Change to use `derived-mode-p'
rather than checking for 'major-mode' matches directly.
(smart-emacs-lisp-mode-p): Add optional `skip-identifier-flag'.
*** (hpath:to-markup-anchor, hpath:to-line): Updated to find matches
outside narrowed area.
*** (hyperb:path-being-loaded): Removed; no longer used.
*** (hpath:shorten): Added and used in 'ibut:insert-text'.
*** (hui:link-possible-types): When reading a dir or file and not on such a
string, use the 'default-directory' or 'buffer-file-name'. Previously
just returned nil in such circumstances.
*** (gbut:save-buffer): Added to save global button file after edits.
*** (kotl-mode:goto-cell-ref): Added to display cell refs after a kotl
mode buffer has already been read in.
*** (kotl-mode:goto-heading): Added to go to a string heading at the
beginning of a cell. Must end with a colon or a newline.
*** (hui:link-possible-types): At end of any line in a dired buffer,
return (link-to-directory default-directory), so when using any
link-directly command, always have a way to link to the dired buffer
itself.
*** (hyrolo-expand-list): Added to expand `hyrolo-file-list', filtering
to matches of `hyrolo-file-suffix-regexp'. See documentation for
`hpath:expand-list' for the kinds of expansions performed.
*** (hpath:expand-list): Added to expand paths, filtering final list
to files with match-regexp. Paths expansion substitutes up to one
${variable} per path, expands file wildcards when 'find-file-wildcards'
is non-nil (the default), and recursively walks directory trees for files
with match-regexp.
*** (hyrolo-map-level, hyrolo-sort-level): Remove 'hyrolo-file' arg
since had already been using current buffer instead.
*** (hpath:file-position-to-line-and-column): Add to translate
character positions to an implicit link to line and column.
*** (hyrolo-next-match-function, hyrolo-next-regexp-match): Change to return
position of the beginning of the match rather than the end.
*** (hyrolo-grep-file): Handle when no entry delimiters, then use
the current line as the entry.
*** (hyrolo-name-at): Rename to 'hyrolo-name-at-p'; change return value
to a cons of (<entry-name> . <entry-source>). If no entry delimiters,
use the current, non-empty line as <entry-name> and add a 'hyrolo-line-entry
text property to it.
*** (hyrolo-to): Add support for non-delimited single line entries.
*** (hyrolo-helm-org-rifle): Filter out any non-file buffers.
*** (hpath:expand, hpath:expand-list): Add optional exists-flag to return
nil if expanded path does not exist.
*** (hyrolo--expanded-file-list, hyrolo-set-file-list,
hyrolo-file-list-changed): Finish support for recursively searching dirs
and expanding file wildcards in 'hyrolo-file-list' by adding the above
and caching the expanded list in 'hyrolo--expanded-file-list'.
*** (hyrolo-edit): Improve 'completing-read' prompt.
*** (rolo-display-buffer, rolo-file-list, rolo-entry-regexp): Remove all of
these variables that have been obsolete since V6. Use hyrolo- prefix instead.
*** (hyrolo-initialize-file-list): Completely remove this function, obsolete since
V8.0.1. Use `hyrolo--initialize-file-list' instead.
*** (defgroup 'hyperbole-hyrolo): Change from 'hyperbole and 'hyperbole-hyrolo.
*** (hyrolo-get-file-list): Add and change refs to `hyrolo-file-list' to use
this instead, so can get the expanded version of the file list.
*** (hyrolo-expand-path-list): Add to expand a list of paths containing env or lisp
variables, directories and file patterns with wildcards into a final list of files.
*** (hpath:expand-list): Add to recursively expand matching files within a list of
directories.
*** (hypb:major-mode-from-file-name): Add for initial use in "hyrolo.el".
*** (hui--ibut-link-directly-to-dired): Handle alternative dired formats with text
after the last colon on the first
*** (hywconfig-add-by-name, hywconfig-delete-by-name, hywconfig-restore-by-name):
Change all these to return a boolean value based on whether the operation
succeeds or not.
*** (hywconfig-set-names): Replace with `hywconfig-named-set-entries'.
(hywconfig-get-names): Replace with 'hywconfig-named-get-names'.
*** (hywconfig-named-get-entries, hywconfig-named-put, hywconfig-named-get): Add.
*** (hbut:actype, ibut:type): Add for Hyperbole API use.
(ibut:is-type-p): Add to give both an ibut and a type for comparison and API use.
*** Add "hsys-xref.el". Rename all Hyperbole defined 'xref-' functions to 'hsys-xref-'
and move here. The xref function, 'xref--item-at-point' is redefined to handle
the beginning of buffer.
*** (ibut:act-label, ebut:act-label): Rename `ebut:act' and `ibut:act' since they take
a label as arg.
(ebut:act, ibut:act): Add new act functions taking an hbut as an arg.
(hbut:act-label): Add to match same func for ebuts and ibuts.
** ORG MODE INTEGRATION (See "(hyperbole)Smart Key - Org Mode").
*** Automatic Fix of Mixed Org Versions: Loading Hyperbole (via its
`hyperb:init' function) automatically detects and resolves the
hard-to-fix problem when some older builtin Org libraries are loaded
before a newer version of the Org package is loaded. The fix utilizes
libraries exclusively from the newer Org package. See the doc for
`hsys-org-fix-version'.
*** Org Links Outside Org Buffers: The `org-link' actype now opens links
found inside and outside of Org buffers.
*** Interactive Org Directory Consult Grep: {M-x hsys-org-consult-grep
RET} interactively greps your `org-directory' files with live in-buffer
display as you move through matching lines.
*** Interactive Org-Roam DB Consult Grep: {M-x hsys-org-roam-consult-grep
RET} interactively greps org-roam files with live in-buffer display as
you move through matching lines. It uses the automatically installed
consult-org-roam package when invoked. See
"(hyperbole)hsys-org-roam-consult-grep".
*** Org and Org Roam IDs: New `org-id' implicit button type and
`link-to-org-id-marker' action type that jump to the referent of an Org
ID or Org Roam ID at point. If a marker does not yet exist, there is
the `link-to-org-id' action type. An Action Key drag across windows
ending at an Org ID will create a link button with this last action
type, which will jump to the ID's definition regardless of whether the
link was to the definition or a reference. See "(hyperbole) ibtypes
org-id".
*** Org Code Blocks: On a header :dir directory, the Action Key displays
that directory in dired. The Assist Key anywhere in the header removes
any results for the code block. Smart Keys work the same when on a
#+RESULTS header as when on a code source header. Smart Key tag
lookup now works in Org code blocks. Smart Keys on Org internal
targets now work just as they do on radio button targets.
*** HyRolo Integration with Org 9.7 and Up: Support "org-fold.el" and other
newer features fo Org mode.
*** Todo Cycling: An Action Key press on an Org mode todo state keyword,
cycles to the next state. An Assist Key press in the same place cycles
to the next set of states, if any.
*** Bobp Hyperbole Doc File Cycling: Allow for org global cycling at the start
of a buffer on a non-heading line within Hyperbole Doc/ files when displayed
from Hyperbole menu items.
*** {C-c /}: The Hyperbole {C-c /} web search binding defers to the org-mode
binding, `org-show-todo-tree', when in Org mode, but uses the improved
Hyperbole command version, `hsys-org-todo-occur', which allows filtering
to specific todo states.
** TEST CASES (See "${hyperb:dir}/test").
*** Hyperbole Automated Testing: Over 400 automated test cases. Simply run
'make test-all' or 'make test' from the command-line when in the
Hyperbole source directory and you should see all tests pass. If any
fail, you can press the Action Key to see the source of the failure.
Full testing is supported under POSIX systems only. See "Makefile" and
"test/MANIFEST".
*** The Hyperbole team's CI/CD process automatically runs all test cases
against Emacs major versions 27, 28 and 29 and the current master
branch tip whenever a Hyperbole code change is checked in against git.
*** ERT Test Case Symbols Jump to Definition: In Elisp and Lisp interaction
buffers, the Action Key jumps to the definition of any such symbol while
the Assist Key displays the symbol's documentation. This requires that
a TAGS table be built in the project root directory with the following
etags command-line option:
etags --regex={lisp}'/(ert-deftest[ \t]+\([^ \t\n\r\f()]+\)/' <src-files>
For the Hyperbole source code itself, you can do this via 'make tags' from
within the Hyperbole source directory, `hyperb:dir'.
*** Run Hyperbole Tests via Make: Use the 'test' target and provide a pattern
of test names to match like so:
make test test=hyrolo
to run just the HyRolo associated tests.
To enable, full backtraces and not truncated ones, add 'FULL_BT=' at the end:
make test test=hyrolo FULL_BT=
*** QA: Many quality improvements across Hyperbole and integration with
Emacs updates with backward compatibility from Emacs 27 through Emacs
29 releases.
** WINDOW GRIDS (See "(hyperbole)grid of windows").
*** Grid by File Pattern: Fixed so prompt for a string pattern rather than
a file name and forced use of full pathnames to avoid improper relative
path resolution.
Updated to use prefix arg as grid size or to autosize when not given or
given an invalid value.
See "(hyperbole)hycontrol-windows-grid-by-file-pattern".
===========================================================================
* V8.0.0
===========================================================================
** HYPERBOLE SYSTEM
*** Installation: Hyperbole package installation options are greatly
expanded. Stable or in-development branches may be installed with the
Emacs package manager. The Straight package manager may be used to
keep up with git-based development and submit pull requests. And
stable and in-development tar balls are available for manual
installation. See "(hyperbole)Installation".
*** Global Minor Mode: Hyperbole is now a global minor mode that can be
toggled with {M-x hyperbole-mode RET}, meaning all of its key bindings
can easily be enabled or disabled whenever desired. Your init file
needs to have (hyperbole-mode 1) in it instead of (require 'hyperbole)
or Hyperbole will not be enabled upon startup. See "(hyperbole)Usage".
Modeline Indicator: In the modeline where minor modes are shown, "Hypb"
now appears whenever Hyperbole is active.
Hooks: When hyperbole-mode is enabled, hyperbole-mode-hook and
hyperbole-mode-on-hook are run. When hyperbole-mode is disabled,
hyperbole-mode-hook and hyperbole-mode-off-hook are run.
Lexical Binding: All code is now largely lexically bound, improving
quality and debugability.
** ORG MODE (See "hui-mouse.el#defun smart-org").
*** M-RET: Reworked M-RET interface so can control how much or little of
Hyperbole works in Org mode when Hyperbole minor mode is enabled. See
"(hyperbole)enable org-mode support" and "hsys-org.el".
*** hsys-org-enable-smart-keys: New customization to replace
`inhibit-hsys-org'. This applies only in Org major/minor modes when
hyperbole-mode is active. t means enable Smart Key support everywhere.
The symbol, buttons, is the default; it means the Smart Keys are active
only when point is within a Hyperbole button. A nil value means no
Smart Key support so {M-RET} behaves just as it does normally in Org
mode. See "(hyperbole)Org-mode". Use {C-h h c o} to customize this
setting.
This table summarizes the operation:
|--------------+-------------------+------------------+----------+------------------|
| Set To | Smart Key Context | Hyperbole Button | Org Link | Fallback Command |
|--------------+-------------------+------------------+----------+------------------|
| buttons | Ignore | Activate | Activate | org-meta-return |
| nil | Ignore | Ignore | Ignore | org-meta-return |
| t | Activate | Activate | Activate | None |
|--------------+-------------------+------------------+----------+------------------|
** EASILY CREATE YOUR OWN BUTTON TYPES
*** Simple Action Link Button Type Creation: `defal' is a new, easy-to-use
construct that generates new action button types from a type name and a
single simple format expression, allowing non-programmers to create
their own implicit action button link types that execute key series,
display URLs, display the contents of pathnames or invoke functions.
See "(hyperbole)Action Button Link Types" or the "DEMO#Defining New
Action Button Types" section.
*** Easy Implicit Link Button Type Creation: `defil' is a new construct for
those familiar with regular expressions but not much Emacs Lisp. This
creates more flexible implicit button types than `defal' where the
delimiters and text substitution can be specified with regular
expressions. Actions are limited to executing key series, displaying
URLs, displaying the contents of pathnames or invoking functions. See
"(hyperbole)Implicit Button Link Types".
Elisp programmers should use the existing `defib' macro for full
flexibility in implicit button type creation. See "hibtypes.el" for
examples and "(hyperbole)Programmatic Implicit Button Types" for
documentation.
** TEST CASES
*** Hyperbole Automated Testing: Extensive quality improvements throughout
Hyperbole thanks in part to over 230 test cases now included in the
test/ subdirectory. Simply run 'make test-all' or 'make test' from the
command-line when in the Hyperbole source directory and you should see
all tests pass. If any fail, you can press the Action Key to see the
source of the failure. Full testing is supported under POSIX systems
only. See "Makefile" and "test/MANIFEST".
*** Action Link Types to Run Tests: The file "hypb-ert.el" contains two
action link types:
hyperbole-run-test - run a single Hyperbole test by name
hyperbole-run-tests - run one more tests matching a pattern
Example uses:
Run the test hbut-defal-url
<hyperbole-run-test hbut-defal-url>