forked from rswgnu/hyperbole
-
Notifications
You must be signed in to change notification settings - Fork 0
/
HY-NEWS
2917 lines (2118 loc) · 127 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
===========================================================================
* V8.0.1pre
===========================================================================
** HYPERBOLE SYSTEM
*** Native Comp Autoloads: Work around Emacs bug where async native comp of
a package being installed does not load hyperbole-autoloads.el (require
libraries to eliminate all Error-level messages).
** HYROLO (See "(hyperbole)HyRolo").
*** Koutline Fast Search: Koutlines may now be included in 'rolo-file-list'
and individual cells extracted properly with any HyRolo query. Then
the interactive commands to show the top-level matches, an outline of
matches or to show, hide or move to matches all work in the match
display buffer as well.
** KOUTLINER (See "(hyperbole)Koutliner").
*** 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).
** 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.
*** {C-c /}: Hyperbole {C-c /} web search binding defers to org-mode
binding, 'org-show-todo-tree' but uses the improved Hyperbole version,
'hsys-org-todo-occur' which allows filtering to specific todo states.
** SMART (ACTION AND ASSIST) KEYS (See "(hyperbole)Smart Keys").
*** 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.
*** 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 from Emacs Lisp native
compilation.
===========================================================================
* 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
*** 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 "DEMO2#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".
*** Implicit Button 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>
Run the tests specified by the test selector hbut-defal
<hyperbole-run-tests hbut-defal>
Run all tests
<hyperbole-run-tests t>
*** Installation Testing: install-test/local-install-test.sh automatically
installs Hyperbole for testing from one or more of its releases or
development branches. See "Makefile" and "install-test/MANIFEST".
** HYROLO (See "(hyperbole)HyRolo").
*** Faster searching within HyRolo match buffer: After performing a HyRolo
search with point in the match buffer, if you want different results,
you can quickly do a new regular expression HyRolo search with {r} or
a string/logical search with {C-u r}. This key had moved to previous
matches but that is already bound to {Shift-TAB} and {M-TAB}.
*** Auto-Expansion of Entries: If an entry is collapsed/hidden, moving to
any hidden part auto-expands it and then re-collapses it when point is
moved to another entry (just like isearch). A side-effect of this is
that the {h} hide entry subtree command now moves to the beginning of
the entry.
*** hyrolo-find-file: New command that selects and edits a file in
`hyrolo-file-list', defaulting to the first listed file when not given
a prefix arg. Available in the minibuffer menu as Rolo/File and the
pulldown menu as Rolo/Find-HyRolo-File.
*** Sorting Entries Rewritten: {C-h h r o} re-ordering HyRolo entries has
been rewritten for compatibility and improved debugging with the latest
Emacs releases.
*** hyrolo-highlight-face: Now uses the Emacs 'match' face by default.
*** Under MS Windows, the default HyRolo file is now "~/.rolo.otl" like
all other operating systems, instead of "~/_rolo.otl". Any older file
name will be relocated to the newer name.
** KOUTLINER (See "(hyperbole)Koutliner").
*** Export Koutlines to Collapsible Web Pages: {C-h h k f d} or
{M-x kexport:display RET} command creates and displays a web-based
expandable/collapsible outline from the Koutline in the current buffer.
See "(hyperbole)Exporting" and the new Koutliner Format submenu.
*** Org File Importation: Org files may now be imported to a Koutline using
{M-x kimport:file RET}.
*** Org Table Support: Org table editing now automatically works in the
Koutliner via Org table minor mode. Use {M-x orgtbl-mode RET} to
toggle this on and off. A press of the Action Key on a | symbol,
also toggles this minor mode on or off. See "(Org)Tables" for details.
Use a prefix arg with {TAB} to promote/demote Koutline trees when in
a table since {TAB} moves between fields within a table.
*** New Tree Movement Commands: Like Org mode, {[M-down]} and {[M-up]} move
the current tree past or before other trees at the same level. With a
prefix argument, move past that many trees.
*** New Tree Promotion/Demotion Keys: Tree promotion and demotion keys now
match many of the defaults in Org mode and Outline mode, plus some
easier to type ones. The tables below summarize which keys work whether
inside an Org table or outside. See "(hyperbole)Promoting and Demoting".
|----------------------------+-----------------------------|
| Promotion Inside Org Table | Demotion Inside Org Table |
|----------------------------+-----------------------------|
| M-0 Shift-TAB or M-0 M-TAB | M-0 TAB |
| C-c C-, | C-c C-. |
| C-c C-< | C-c C-> |
|----------------------------+-----------------------------|
|-----------------------------+----------------------------|
| Promotion Outside Org Table | Demotion Outside Org Table |
|-----------------------------+----------------------------|
| Shift-TAB or M-TAB | TAB |
| M-left | M-right |
| C-c C-, | C-c C-. |
| C-c C-< | C-c C-> |
|-----------------------------+----------------------------|
*** New Mail Tree Key Binding: The `kotl-mode:mail-tree' command that
extracts the current view of a Koutline in text-only format and
creates an outgoing email message with it, has moved from {C-c @}
to {C-c C-@} to prevent conflict with the global hycontrol-window-grid
command bound to {C-c @}.
*** New Copy Command: The new command, `kotl-mode:copy-tree-or-region-to-buffer',
bound to {C-c M-c} copies a Koutline tree or the active region
to a specified buffer. Prompts dictate whether invisible text
is included or not. This allows copying parts of Koutlines
directly into other buffers without having to copy to a
mail/message buffer first.
*** Klink Copy: When `transient-mark-mode' is enabled and there is no active region:
within a link to a Koutline cell (klink), {M-w} copies the klink; then
{C-y} yanks it into any buffer you desire.
{M-w} outside of a klink instead copies a reference to the current
Koutline cell.
{C-x r s} prompts for an Emacs register and saves either the current
klink or the current cell reference to the register; {C-x r i} with the
same register then inserts at point the saved Koutline reference.
The new commands that you can bind to your own keys for copying klink
references to the current cell to the kill ring and to registers are:
kotl-mode:copy-absolute-klink-to-kill-ring
kotl-mode:copy-relative-klink-to-kill-ring
kotl-mode:copy-absolute-klink-to-register
kotl-mode:copy-relative-klink-to-register
*** Klinks Ignored Outside Comments in Programming Language Modes: In
previous Hyperbole versions, this was true for C-based language
modes. Now it is true for any programming mode descended from
`prog-mode'.
*** Prevent Movement Outside Editable Cell Bounds: Add
kotl-mode:pre-self-insert-command as a pre-command-hook
to prevent Koutline editing with point in an invalid location,
after a mouse-set-point outside of editable bounds.
*** {C-h h k e} (kotl-mode:example): Update to allow for an optional
directory or absolute file path. Prompt for the path when interactive.
Given a prefix argument, archive any existing file and start with a
fresh EXAMPLE.kotl file for editing. Programmatically, give a 2nd
arg of t to force archiving of any existing file and starting with
a fresh EXAMPLE.kotl file.
*** Koutlines have a hidden top-level root cell 0 that allows referring
to the whole outline as a tree. Now attributes of this cell can be
set, retrieved or removed like any other cell.
{C-c h} prompts for a kcell id and displays its attributes.
{C-u C-c h} prompts for a kcell id and displays the attributes for it
and its subtree; use 0 as the kcell id to see attributes for all visible
cells in the outline.
{C-c C-i} sets an attribute of the cell at point.
{C-u C-c C-i} removes an attribute of the cell at point.
{C-0 C-c C-i} sets an attribute of the invisible 0 root cell.
{C--1 C-c C-i} removes an attribute of the invisible 0 root cell.
*** Modes to Ignore Klinks: C-style languages use <includes> that can be
mistaken for klinks. New customizations 'klink:ignore-modes' and
'klink:c-style-modes' set the modes where klink matches are ignored.
** MENUS
*** Minibuffer Menu Changes:
- Items Activated by First Capital Letter: Used to be by the first
letter. This allows more flexibility in naming, e.g.
where two items start with the same first letter.
- {X} exits Hyperbole mode: This disables the Hyperbole minor mode
completely and exits from the menu. {C-h h} re-enables the
global minor mode and display the top-level Hyperbole menu.
*** Minibuffer and Pulldown Menu Changes:
- Find/Web/Jump: Use the Emacs webjump library to select a URL by name
and jump to it.
- Koutliner Formatting Menus: Full set of commands to import
text and outline files to Koutlines and to export Koutlines
to HTML for web viewing. See "(hyperbole)Inserting and Importing"
and "(hyperbole)Exporting".
- Button Modify Commands Removed: Use the Edit commands instead.
This applies to the pull-down menu as well.
** SMART (ACTION AND ASSIST) KEYS (See "(hyperbole)Smart Keys").
*** Explicit buttons may be created in any kind of temporary buffer
without an attached file, similar to what already existed for mail
message buffers.
*** 'ls' and 'grep' Directory Changes: 'ls' listings are now recognized
properly, prepending the preceding directory to each entry for viewing.
Similarly, if a 'cd' or 'pushd' command is issued prior to a 'grep -n'
or 'ripgrep' command, Hyperbole will prepend that directory to the grep
output before jumping to the resultant path.
*** Git Log Grep: New commands, 'hypb:fgrep-git-log' and 'hypb:grep-git-log',
allow f/grepping over repo changesets and listing associated commit log
messages. The Action Key on any resulting log entry displays the commit
changeset.
*** Pathname Implicit Buttons: Much improved pathname handling including
multiple variables per path, embedded . or .. within paths, better
recognition of semicolon separated pathnames in Windows PATH variable.
Variable substitutions are now made with fixed case, so that the
case of a value with both upper and lower case characters is
never changed, for example a value of ${HOME}.
Generalized Anchored Pathnames: "pathname#anchor" now works in
programming modes as well as text and outlining modes where anchors
are prefixed with the comment character in each mode or a # symbol.
PATH-style Variable Support: An Action Key press on a defined PATH-style
variable name, e.g. MANPATH, will prompt with completion for one of the
paths and will then display that. If it is the colon or semicolon-
separated string of paths value from a PATH-style variable, the path at
point is displayed; empty paths, e.g. :: represents the current directory,
’.’. Must have at least four paths within the variable value for this
to work.
file:// URLs are now resolved properly.
*** Any Lisp or environment variable that stores a directory or set of
directories may be prepended to any "grep -n" output line with the form
"${var-name}/" and the Action Key will recognize the directory and display
the appropriate line.
*** Treat kbd Strings as Key Series Buttons: An Action Key press within
the string of (kbd "string") issues the keys in string as if they were
pressed individually, i.e. the same as the key series, {string}.
*** Mail Address Activation Everywhere: Email addresses are recognized as
implicit buttons in major modes descended from `mail-address-mode-list'.
If you set that to nil, however, they will be recognized in all major
modes.
*** Magit Mode Support: Just click or press the Action Key somewhere and it
will typically display what you want. Extensive Action Key support in
Magit modes for cycling through display views and displaying items.
Action Mouse clicks on the modeline cycles display of commits/diffs in
a buffer. In Magit Log and Blame listing modes, the Action Key
displays the associated commit or file line. The Action Key also
handles single line log entries that begin with the word 'commit' ,
displaying their commits even from shell and compilation buffers.
*** Debugger Source: In Python tracebacks, may be on a line just below the
source reference line so if not on a Hyperbole button, move back a line
before checking.
*** Todotxt Mode Support: Smart key support for the todotxt mode
https://github.com/rpdillon/todotxt.el.
*** UNIX Shell Errors: Jump to associated source line from a shell error of the
form: "<pathname>: line <num>: ".
*** Internet RFC Links (e.g. RFC-822): Change to using http to retrieve RFCs
instead of ftp since this is disabled in many environments. Always display
with Emacs' web browser rather than externally.
*** Implicit Button Types Reprioritization: Modified "hibtypes.el" so if
evaluate: (symset:clear 'ibtypes) and then reload hibtypes.{el,elc},
the priority order of all implicit button types is reset.
** CUSTOMIZATION
*** Customizable Display Program File Mappings:
The variables:
hpath:internal-display-alist
hpath:external-display-alist-macos
hpath:external-display-alist-mswindows
hpath:external-display-alist-x)
are all customizable and their default values utilize the per operating
system generic 'open' commands based on file suffix associations (for file
types not handled by Emacs).
The new customizable variable, `hpath:external-file-suffixes', holds a regular
expression of operating system independent file suffixes to open outside Emacs
with the Action Key when not handled by `hpath:native-image-suffixes'.
** PROGRAMMING
*** With the Hyperbole menu Cust/Debug-Toggle enabled, the messages printed
for each Smart Key press now include the action type and its arguments
for improved debugging.
*** Edebuggable Hyperbole Types: `defib' and `defact' type definitions
are now interactively debuggable via edebug-defun {C-M-x}.
*** ebut:program: Programmatically create an explicit Hyperbole button at
point from LABEL, ACTYPE (action type), and optional actype ARGS.
*** gbut:ebut-program: Programmatically add global explicit buttons at the
end of the personal button file.
*** kbd-key implicit button type: Interactive creation now allows for
a full key series, not just a single key binding.
*** kbd-key:is-p: Added this new predicate to test whether point is within
a brace-delimited key series.
*** kbd-key:execute: Added to programmatically or interactively execute a
non-normalized key series stored in a string.
*** hypb:def-to-buffer: Quick copying of program definitions and insertion
at the start of another buffer. Can be bound and used in key series.
*** smart-lisp-find-tag: New function that automatically finds tags tables
and jumps to Emacs Lisp definitions. It can be used in any type
of file as an action button, e.g. <smart-lisp-find-tag "ibut:at-p">.
*** ibut:at-p: Trigger an error if any implicit button type predicate
permanently moves point to simplify debugging such predicates.
*** hypb:string-count-matches: Count regexp matches in a string.
** 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 bound to {M-o w}
rapidly creates a link button at point in the selected window,
linking to point in the window chosen when prompted.
See "DEMO2#Displaying File and Buffer Items and Moving Buffers".
*** Throw A Region Elsewhere Within the Same Buffer: {M-o t <window-id>}
when used with a selected region can now throw to the source buffer
as long as point is outside the selected region in the target window.
===========================================================================
* V7.1.3
===========================================================================
SMART (ACTION AND ASSIST) KEYS
- Global Org Link Activation: The Action Key now activates Org links in
non-Org buffers if 'inhibit-hsys-org' is nil (the default). The Assist
Key shows help.
- Org Agenda Item Display: The Action Key displays the Org node
associated with Agenda items such as TODOs in another window. The
Assist Key shows help.
- Org Mode: Raised to near top priority in implicit button types so that
pathnames, URLs, etc. within Org links are handled by Org rather than
Hyperbole.
- Smart Dired Sidebar: Smart Key support for the dired-sidebar
package. See "(hyperbole)Smart Key - Dired Sidebar Mode".
- Helm Mode: The Smart Keys do all sorts of things in helm completion buffers
and the associated minibuffer. See "(hyperbole)Smart Key - Helm Mode".
- Magit Mode: Action Key expands/collapses like {TAB} and Assist Key
jumps to items like {RET}. See "(hyperbole)Smart Key - Magit Mode".
BUTTON TYPES
- {Key Series} Button Support for Helm and Counsel: Key series buttons
with M-x commands now work properly when counsel-mode or helm-mode are
enabled and M-x is rebound.
- Markdown In-file Links: With point on the link title, in-file links are
now activated properly (previously point had to be on the link itself).
- Git#directory Buttons: New flag, hibtypes-git-use-magit-flag, which if
set to t and Magit is available, then when activating a git directory
button, such as git#/hyperbole, use Magit rather than Dired.
- Explicit Buttons Work Immediately: Previously you had to save the buffer
in which you created an explicit button before it would work. Now they
work immediately after creation.
DOCUMENTATION
- Helm Mode: Added Hyperbole Manual section, "Smart Key - Helm Mode"
that works on helm completions. See "(hyperbole)Smart Key -
Helm Mode".
- Hyperbole Slides: Slides used in a talk by the author on the history
and capabilities of Hyperbole, see "HY-TALK/HY-TALK.org".
- Magit Mode: Added Hyperbole Manual section, "Smart Key - Magit Mode"
that expands/collapses/jumps to Magit items. See "(hyperbole)Smart Key -
Magit Mode".
===========================================================================
* V7.1.2
===========================================================================
BUTTON TYPES
- Link Creation via Drag: Automatic link referent detection has been
expanded. You can now drag the Smart Mouse Key across windows or use
'hkey-operate' to create an explicit link button to an Emacs
Bookmark or to a Texinfo Node.
- link-to-texinfo-node Action Type: Now takes a first file parameter,
rather than working only on the current buffer.
KOUTLINER
- Visual Command Support: Use of these additional Emacs commands:
beginning-of-visual-line, end-of-visual-line, and kill-visual-line.
MENUS
- Global Key Bindings for Hyperbole Menu Items: Use
{M-x hyperbole-set-key RET} to create a shorter global key binding
to any Hyperbole minibuffer item.
- Gbut/Create: When invoked with a prefix argument, will create a
global implicit button rather than an explicit button. Simple provide
a name/label and the text of the implicit button including delimiters.
- Gbut/Delete: Added to delete explicit or implicit global buttons.
- Gbut/Modify: The name/label and the text (and thus the action) of global
implicit buttons may now be modified. Hyperbole automatically determines
whether a button is explicit or implicit from the button name selected.
MOUSE
- Click Emacs Buttons with Left Mouse Button: When using mouse-1
to follow Emacs buttons/links, Emacs actually uses the binding
of mouse-2. With unshifted Hyperbole mouse keys, this mouse-2
binding is incompatible as it is the Action Key. This release
resolves this problem and allows either mouse-1 or mouse-2 to be
used to click on native Emacs buttons.
- Drag and Drop Region with Left Mouse Button: When
'mouse-drag-and-drop-region' is non-nil and a region is active,
Hyperbole now properly supports using mouse-1 to visually drag from
within the region and drop the text somewhere else. Then click the
left mouse button again to de-activate the dropped region before
typing.
===========================================================================
* V7.1.1
===========================================================================
DEMO2
- Global Buttons: Added a new example of a labeled global implicit button
displaying a todo file maintained in Koutliner format. See
"DEMO#Global Buttons".
- Within one Emacs session, invoking the DEMO with {C-h h d d} now leaves
point where it was so you can continue working your way through it.
- You can now move between matching < and > as well as { and } delimiter
pairs with {C-M-n} and {C-M-p}.
BUTTON TYPES
- Gbut/Rename: Added renaming of global explicit and named labeled
buttons.
- {kbd-key} Key Series: Greatly expanded the keys handled by
brace-delimited implicit key series buttons. Added support for
<TAB>, <BS>, C-M-, non-ASCII CONTROL and META key codes, keypad
keys, function keys, and these modifier keys: CONTROL, ALT,
HYPER, META, SUPER and SHIFT (when whitespace separated).
- Action Implicit Buttons: May now start with Lisp special forms like
'progn' and 'or'.
- Longer Button Labels: The default max length of a Hyperbole button
label has been increased from 100 to 200 characters. The variable
hbut:max-len controls this. If you locally set this to 0 in any
new button type definition, then for that type of button, there
will be no maximum limit. Since Action Implicit Buttons can be
a series of Lisp calls, they are now unlimited in length.
===========================================================================
* V7.1.0
===========================================================================
BUTTON TYPES
- In-buffer Labels: Fixed a number of in-buffer text handling issues with
the creation of explicit buttons, maximizing reuse of existing text in
labels.
- link-to-file Action Type: Extended to allow file path to include either
:line-num:column-num or just :line-num at the end (translated to character
location within the button).
DOCUMENTATION
- Bookmark Mode: Added Hyperbole Manual section, "Smart Key - Bookmark Mode"
that allows linking to Emacs Bookmarks. See "(hyperbole)Smart Key -
Bookmark Mode".
MENUS
- Activate Any Labeled Buffer Button: Hyperbole's top-level menu 'Act'
command either activates any button at point or prompts for the choice of
any labeled explicit or implicit button within the buffer to activate.
The pulldown menu item, Activate-Button-in-Buffer, behaves the same.
- Org-mode in Q&A Appendix: Rewrote this section to account for improved
integration.
===========================================================================
* V7.0.9
===========================================================================
Many issues were resolved in this test version as documented in "Changes".
Only new features are documented here.
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:
- Region Throws: The hkey-throw command bound to {M-o t} now throws the
active (highlighted) region, if any, into the target window's buffer,
rather than replacing its buffer with the source window buffer. If
you don't use region highlighting, i.e. transient-mark-mode, then use
{C-u M-o t} for the same effect. The buffer in the target window
must differ from the one in the source window. With no region
active, this command still throws the source buffer to the target
window. See "DEMO#Displaying File and Buffer Items and Moving Buffers".
SMART (ACTION AND ASSIST) KEYS
- Modeline Drag Window Resizing: Smart Key window resizing now provides
live feedback during the drag.
- Bottommost Modeline Frame Moving: After adding a 'drag-with-mode-line'
frame parameter with a value of t, a drag of any of its bottommost
modelines with either Smart Mouse Key repositions the frame on screen.
See "(hyperbole)Moving Frames" for information on how to configure this
feature.
CUSTOMIZATION
- hproperty:flash-face: Face used when flashing a button; now customizable.
- hproperty:highlight-face: Face used to highlight a line; now customizable.
- inhibit-hsys-org: See ORG MODE section below.
GLOSSARY
- Hlink Definitions: Added Action Button, Elink, Ilink, Glink definitions.
HYCONTROL
- Windows Grid by File Pattern: {C--1 C-c @} prompts for a glob-type file
pattern, finds all the matching files and then displays them in an auto-sized
windows grid based on the number of files.
- Autosize Windows Grid of Marked Items: When in a Dired, Buffer Menu or IBuffer
buffer and items are marked, {@} will display them in an auto-sized window grid
rather than prompting for a size.
- Buffer/Window Swapping: Improved {~} so current buffer remains the same but
the selected window changes. Also made frame buffer swapping work anytime
there are two or more frames regardless of how many windows in each. See
"DEMO#Swapping Buffers".
- HyControl Now Accepts Negative Prefix Args: If the minus key is pressed when
HyControl is invoked or after any other prefix arg command, it will invert the
current prefix arg value (or when zero, set the prefix arg to -1).
HYROLO
- Hyrolo Add: Fixed new entry addition to add in sorted order and make logic
operators perform properly, after a bug in level calculation had been
introduced.
IMPLICIT BUTTONS
- Double Quoting Key Series: Key series delimited by {} may now be in double
quotes, e.g. "{C-x o}".
- Windows to Posix Paths: Much improved conversion of MSWindows UNC paths to
existing Posix mount points when running Emacs under Windows Subsystem for
Linux. See
- Flashing Implicit Buttons: More types of implicit buttons now flash when
activated.
- Improved Grep Output Parsing: Recognizes file names with spaces followed by
the null (^@, ASCII 0) character.
- Texinfo @-Quoted Path Variables: Hyperbole now can resolve paths as
complicated as this: @file{$@{hyperb:dir@}/DEMO#POSIX and MSWindows Paths}
in Texinfo files if the Action Key is pressed on the / or after, i.e. after
the variable name.
KEYS
- Deleted C-c C-r Global Binding: Removed {C-c C-r} key binding for explicit
button renaming due to conflicts with some major modes
ORG MODE
- Implicit Button Support: Org-mode's local binding of {M-RET} by default
now activates Hyperbole implicit buttons when within them.
- inhibit-hsys-org: New customization that when set non-nil disables
all Smart Key support in any Org major or minor mode.
- hsys-org-hbut-activate-p: Added to org-metareturn-hook so local binding
of {M-RET} in org-mode activates Hyperbole buttons when point is over
them. (It doesn't run the full set of Action Key actions).
PROGRAMMING
- Auto Imenu Reindexing: If using Emacs imenu package, the Action Key
will look up in-buffer identifier references with imenu. If imenu's
index is rendered invalid due to large changes in a buffer, Hyperbole
will now automatically rebuild the index to have correct pointers.
(Does not require use of the imenu-auto-rescan setting.
- hypb:mark-object: Gives Hyperbole-specific strings and symbols
a hyperbole property that distinguishes them from other objects.
- hypb:object-p: Tests whether has the hyperbole property. This is useful
in hpath:relative-to and hpath:absolute-to where any string with a
hyperbole property is ignored as a potential path. For example, this
prevents removal of trailing whitespace from normalized key series.
- hbut:act: Hyperbole button parameter is now optional and defaults to
the located button, the symbol, 'hbut:current.
- ibtypes tag lookup: Implicit button type names such as ibtypes::grep-msg
are now properly found in tags tables using their defib names
(e.g. grep-msg).
- hmouse-drag-p: tests whether absolute Smart Mouse Key depress and
release positions differ (relative to display/screen coordinates).
- hycontrol-quit: Unified the two Hycontrol mode quit commands into this one.
hycontrol-abort: Renamed from hycontrol-abort-mode.
- hyperb:autoloads-exist-p
hyperb:maybe-generate-autoloads
hyperb:generate-autoloads: Added and called from hyperb:init when
initializing Hyperbole to generate auto-autoload files when
running from a non-packaged source download of Hyperbole.
===========================================================================
* V7.0.8
===========================================================================
BUTTONS
- Action Buttons: A new, universal syntax for creating implicit buttons
that execute any existing action types or Elisp functions. Such
buttons are delimited by angle brackets, < >, and come in three types:
action type invocations, function calls and variable displays. See
"(hyperbole)Action Buttons" for examples and details on this exciting
new capability.
- Labeled Implicit Buttons: Optional <[labels]> that precede implicit
buttons. This enables implicit buttons to be activated by name when
in the current buffer or anywhere when added to the global buttons
file (personal button file).
- Link to Buttons: New implicit button types that link to buttons based
on their categories and labels:
In Buffer Syntax Implicit Button Type
===========================================================================
<elink: explicit button label to link to: optional ebut file> link-to-ebut
<glink: global button label to link to> link-to-gbut
<ilink: implicit button label to link to: optional ibut file> link-to-ibut
- Other New Implicit Button Types:
debugger-source: Jump to the source of errors from the Python pytype package
ipython-stack-frame: Jump to the source of ipython stack traces and exceptions
- Other New Action Types:
link-to-bookmark: Display an Emacs bookmark
- Much Faster Implicit Buttons: Major speedup in implicit button identification
and activation even with the new generalized Action implicit button type
syntax, due to internal optimizations.
- Pathname Flashing: Pathname implicit buttons now flash when activated.
- Pathname References: Pathname implicit buttons may contain both link anchors
and line and column numbers. Format is:
"<path>[#<link-anchor>]:<line-num>[:<col-num>]"
- Shell Script Link Anchors: Link anchors now work for shell script editing modes
as well using comment lines as the anchors, e.g. "myscript.sh#Env Variables".
- Dir Variable Separators: Variables in paths no longer require a trailing directory
separator. Both of these are live Hyperbole paths:
"${hyperb:dir}DEMO#Smart Mouse Keys"
"${hyperb:dir}/DEMO#Smart Mouse Keys"
- Jump Thing: Added xml-mode support for pressing the Action Key when on a start or
end tag pair to select the whole region between them. {C-c .} also moves between
the start and matching end tag. See "(hyperbole)Smart Key Thing Selection".
DOCUMENTATION
- DEMO2: New sections on Button Files and Global Buttons.
- Action Types: link-to-gbut, link-to-ibut - Added.
- hpath:native-image-suffixes: documented this setting for controlling
image types that Hyperbole displays within Emacs.
- Implicit Button Types: Split off type descriptions to this new
subsection and added these types: ripgrep-msg, ipython-stack-frame,
ilink (link to implicit button), glink (link to global button), and
elink (link to explicit button).
- DEMO2 (Action Buttons): Added description and examples.
- Path Variables: Better documented how these are handled.
- Hyperbole Manual, DEMO (Implicit Buttons): Added description and
example of implicit button labels.
- Glossary: Updated Implicit Button and Global Button entries with
changes.
- Installation: All new manual section on multiple ways to install Hyperbole.
KOUTLINER
- When 'c' (clip to lines per cell) is omitted from a viewspec, clipping
now changes to whatever the default number of lines per cell is
(typically, unlimited). The same goes for the 'l' spec (limit display
to a certain level of cells).
MENUS
- Pulldown Menus: Implicit-Button/Label: Added to add a label.
Implicit-Button/Rename - Added to rename the label
of an implicit button.
- Minibuffer Menus: hui-mini.el (hui:menus): Added Ibut/Label and
Ibut/Rename.
ORG MODE
- Radio Targets and Links: Smart Keys now handle these.
- Links: Smart Keys handle both internal and external Org mode links.
PROGRAMMING
- ibut:at-type-p: Added to test if point is on a specific type of
implicit button.
- hbut:key, ebut:key, ibut:key, hbut:rename, hui:hbut-rename,
hui:hbut-operate: Added to allow renaming of any type of labeled
Hyperbole button.
- hypb:region-with-text-property-value: Added and used in hysy-org.el.
- hsys-org-mode-function, hsys-org-mode-p: Added to determine when
hsys-org actions are activated.
- ebut:key-src-set-buffer, hbut:key-src-set-buffer, hbut:key-list,
hbut:ebut-key-list, hbut:ibut-key-list, hbut:label-list): Added
to allow selection of labeled Hyperbole buttons in current buffer by
name.
- gbut:get, hbut:map, ibut:label-map, ibut:key-src, ibut:key-to-label,
ibut:label-to-key, hui:ebut-act, ibut:summarize, ibut:label-start,
ibut:label-end, ibut:label-p, ibut:get, hui:ibut-label-create,
hui:ibut-rename, hui:ibut-message, ibut:alist, ibut:list, ibut:map,
ibut:next-occurrence, ibut:label-regexp, gbut:ibut-key-list, ebut:to,
gbut:to, ibut:to, ibut:label-separator, hbut:label-regexp,
ibut:rename, hbut:get: Added to support implicit button labels and
links to buttons.
hbut:label-p: Updated to handle implicit button labels.
ibut:label-separator-regexp, hbut:outside-comment-p: Added.
- elink, elink:start, elink:end: Added for in-buffer links to explicit buttons.
glink, glink:start, glink:end: Added for in-buffer links to global buttons.
ilink, ilink:start, ilink:end: Added for in-buffer links to implicit buttons.
- hsys-org-set-ibut-label: Added and used in org-mode ibtype.
org-mode, hsys-org-at-block-start-p: Added Action Key activation of
Org blocks when on 1st line of def.
SMART (ACTION AND ASSIST) KEYS
- Emacs Bookmark Menu Mode: Jump to the bookmark at point.
- hpath:find-program: Changed to prioritize hpath:native-image-suffixes
over hpath:internal-display-alist over hpath:external-display-alist-macos
instead of the reverse. This prevents external viewers from being
used when internal viewers are also in effect.
===========================================================================
* V7.0.3
===========================================================================
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:
- Selected Window Buffer Replace: Added the ability to 'replace' the
selected window's buffer with the buffer of another window. Use
{M-o r <window-id>}. To swap the buffers between the same two windows,
use {M-o m <window-id>. See "(hyperbole)Keyboard Drags" for setup and
use instructions.
- New Frame Commands: Any of these M-o commands that involve two windows
can use a new frame as the target window by using a <window-id> of 'z'.
So, {M-o t z} throws the current buffer to a new frame with a single
window displaying that buffer. The new frame will be the same size as
the prior frame to match the behavior of HyControl.
- Integrated Ace Window commands with Smart Key Drags and added commands
for use with the mouse that select Ace Window source and target windows
by clicking with the mouse: hmouse-click-to-drag,
hmouse-click-to-drag-stay, hmouse-click-to-drag-to,
hmouse-click-to-replace, hmouse-click-to-swap, hmouse-click-to-throw.
- {M-o i <window-id>} is now for use only when on a listing item such as
in Dired or Buffer Menu. It no longer creates Hyperbole buttons in
non-item areas to avoid confusion. Now it will just trigger an error
if not on a listing item.
SMART (ACTION AND ASSIST) KEYS
- MSWindows Paths: Hyperbole now recognizes typical MSWindows paths (both
local and remote shares) and can convert an in-buffer path between POSIX
and MSWindows formats multiple times, even paths involving mount points.
See "DEMO#POSIX and MSWindows Paths".
MSWindows paths may be used within links and implicit path
buttons just like POSIX paths, whether running Emacs under a POSIX
system or MSWindows. If under POSIX, a remote MSWindows path must be
accessed through a mount point to the network share. Hyperbole caches
such mount points when it is loaded. Use {M-x