Smart Key Operations
The Action Key generally selects entities, creates links and activates buttons. The Assist Key generally provides help, such as reporting on a button’s attributes, or serves a complementary function to whatever the Action Key does within a context.
The Hyperbole Doc/SmartKeys menu entry, {C-h h d s}, displays a summary of what the Smart Keys do in all of their different contexts. Alternatively, a click of the Assist Mouse Key in the right corner of a window modeline (within the rightmost 3 characters) toggles between displaying this summary and hiding it. Reference this summary whenever you need it.
The following table is the same summary. Much of the browsing power of Hyperbole comes from the use of the Smart Keys, so spend some time practicing how to use them. Study what modeline clicks and window drag actions do as these will give you a lot of power without much effort. This table may appear daunting at first, but as you practice and notice that the Smart Keys do just a few context-sensitive things per editor mode, you will find it easy to just press or point and click and let Hyperbole do the right thing in each context.
========================================================================================
Smart Keys
Context Action Key Assist Key
========================================================================================
Hyperbole
On a minibuffer menu item Activates item Item help
On an explicit button Activates button Button help
Reading argument
1st press at an arg value Copies value to minibuffer <- same
2nd press at an arg value Uses value as argument <- same
In minibuffer at eol Accepts minibuffer arg List completions
In minibuffer before eol Deletes rest of arg Deletes rest of arg
On an implicit button/path Activates button/path Button help
Within a koutline cell Collapses and expands Shows tree props
Left of a koutline cell Creates a klink Moves a tree
HyRolo Match Buffer Edits entries and mails to e-mail addresses
Mouse or Keyboard Display Control
Line end, not end of buffer
smart-scroll-proportional
= t (default) Makes curr line top line Bottom line
= nil Scrolls up a windowful Scrolls down
End of Any Help buffer Restores screen to the previous state
Read-only View Mode Scrolls up a windowful Scrolls wind down
Mouse-only Control
Drag from thing start or end Yanks thing at release Kills thing and yanks
A thing is a delimited at release
expression, such as a
string, list or markup
language tag pair
Drag from bottom Modeline Repositions frame as <- same
in frame with non-nil drag happens
drag-with-mode-line param
Drag from shared window side
or from left of scroll bar Resizes window width <- same
Modeline vertical drag Resizes window height <- same
Other Modeline drag to Replaces dest. buffer Swaps window buffers
another window with source buffer
Drag to a Modeline from:
but/buffer/file menu item Displays ref/buffer/file Swaps window buffers
in new window by release
buffer/file menu 1st line Moves buffer/file menu to Swaps window buffers
new window by release
anywhere else Displays buffer in Swaps window buffers
new window by release
Drag between windows from:
but/buffer/file menu item Displays ref/buffer/file <- same
in window of button release
buffer/file menu 1st line Moves buffer/file menu <- same
anywhere else Creates an ibut link Creates an ebut link
Drag outside of Emacs from:
but/buffer/file menu item Displays ref/buffer/file Moves window to new frame
in a new frame
Modeline or other window Clones window to new frame Moves window to new frame
Modeline Click
Left modeline edge Buries current buffer Unburies bottom buffer
Right modeline edge Displays GNU Info manuals Displays Smart Key summary
Buffer ID Dired on buffer's dir Displays next buffer
or on parent when a dir
Other blank area Action Key modeline hook Assist Key modeline hook
Shows/Hides Buffer Menu Popups Screen & Jump Menus
Drag in window, region active Error, not allowed Error, not allowed
Horizontal drag in a window Splits window below Deletes window
Vertical drag in a window Splits window side-by-side Deletes window
Diagonal drag in a window Saves wconfig Restores wconfig from ring
Active region exists, click Yanks region at release Kills and yanks at release
outside of the region
Hyperbole Key Press/Click in Special Modes
Region Active Yanks region at release Kills and yanks at release
Company Mode Completion Displays definition Displays documentation
Helm Completion Displays item Displays item
Emacs Push Button Activates button Button help
Emacs Regression Test Def Evals and runs test Edebugs and runs test
Thing Begin or End Marks thing region Marks & kills thing region
Flymake Linter Mode Jumps to issue at point Displays issue at point
Page Directory Listing Jumps to page <- same
C,C++,Objective-C,Java Modes Jumps to id/include def Jumps to next def
Assembly Language Mode Jumps to id/include def Jumps to next def
Java Cross-reference Tag Jumps to identifier def Jumps to next def
JavaScript and Python Modes Jumps to identifier def Jumps to next def
Any Known Lisp or ChangeLog Jumps to identifier def Referent Doc
Fortran Mode Jumps to identifier def Jumps to next def
Imenu Programming Identifier Jumps to in-buffer def Prompts for id to jump to
Emacs Lisp Compiler Error Jumps to def with error <- same
Emacs Regression Test (ERT) Jumps to def with error <- same
Other Compiler Error Jumps to src error line <- same
Grep or Occur Match Jumps to match source line <- same
Multi-buffer Occur Match Jumps to match source line <- same
Etags `TAGS' file entry Jumps to source line Button help
Ctags file entry Jumps to source line Button help
Texinfo Cross-reference
Before opening brace Jumps to Texinfo referent Button help
Within braces Jumps to Info referent Button help
Menu Item or node hdr Jumps to Texinfo referent Button help
Include file Jumps to Texinfo referent Button help
code/var reference Displays doc for referent Button help
Org Mode Follows links, cycles headings and Org Meta Return
Org/Roam ID Jumps to ID referent Button help
Outline Major/Minor Modes Collapses, expands, and moves outline entries
Man Apropos Displays man page entry <- same
Man Pages Follows cross refs, file refs and C code refs
I/Buffer Menu Saves, deletes and displays buffers
Todotxt Mode Toggles item completion Edit and archive items
Emacs Info Reader
Menu Entry or Cross Ref Jumps to referent <- same
Up, Next or Prev Header Jumps to referent Jumps to prior node
File entry of Header Jumps to top node Jumps to (DIR) node
End of current node Jumps to next node Jumps to previous node
Anywhere else Scrolls up a windowful Scrolls down a windowful
Subsystems
Calendar Scrolls or shows appts Scrolls/marks date
GNU Debbugs Tracker Displays issue discussion Displays issue status
Treemacs Displays item Displays item
Dired Sidebar Displays item Displays item
Dired Mode Views and deletes files from dir listing
Magit Modes Collapses, expands and jumps to things
GNUS News Reader Toggles group subscriptions, gets new news,
and browses articles
Mail Reader and Summaries Browses, deletes and expunges messages
OO-Browser Browses object classes and elements
Tar Mode Views and edits files from tar archive files
Any other context (defaults) Invalid context error Invalid context error
========================================================================================See Smart Key Reference, for extensive reference documentation on the Smart Keys.
Note how the last line in the table explains that the default behavior of the Smart Keys in an unknown context is to report an error. You can change these behaviors by setting two variables. See the documentation for the variables action-key-default-function and assist-key-default-function for information on how to customize the behavior of the Smart Keys within default contexts.
When you use a mouse and you want to find out what either of the Smart Keys does within a context, depress the one you want to check on and hold it down, then press the other and release as you please. A help buffer will pop up explaining the action that will be performed in that context and attributes of the button, if any. A press of either Smart Key at the end of that help buffer will restore your display to its configuration prior to invoking help.
On the keyboard, {C-h A} displays this same context-sensitive help for the Action Key while {C-u C-h A} displays the help for the Assist Key. Note that {C-h a} performs a function unrelated to Hyperbole, so you must press the shift key when you type the A character.