Hi,
I've finished a new version of 'open_local_symbol2.e' (I just keep this module name).
What's new in v4.0.0:- quick tag filter support including (currently only one) user defined tag filter set
- class names are included when filtering to support fully qualified symbol names (1)
- begin / end regex [^,$] support to support prefix / suffix match (2)
- strict / relaxed word order
- sort by line / name
- pseudo cursor useful when separating tokens by SPACE (3)
- Preview TB support
- (smart) CaSe sensitivity support (4)
- leave bookmarks on goto symbol - go back with pop-bookmark (usually bound to CTRL-COMMA) (5)
- context menu for interactive configuration of almost all configurable items (6)
- improved 'show return type' (it's just displayed and not taken into account when filtering)
- deletion: ALT-BACKSPACE deletes the whole filter, CTRL-BACKSPACE the last word (and BACKSPACE the last char)
- changed the internal design to provide a better responsiveness for buffers containing a large number of symbols.
(1) Hint: A single '~' token matches all destructors and ':' matches all classes/members in a buffer
(2) These chars can be entered at any time b/c they are automatically added to/removed from the right position.
There are some alternative key bindings which might be useful too:
'!' == '^' and
'(' or
')' == '$' (and a few more - see event handler definitions)
If 'Strict word order is NOT set '^' (prefix match) affects the last/current word.
Otherwise it's added to/removed from the 1st word.
(3) '_' is not longer handled as separator (by default).
BTW: Don't be surprised that you can't enter successive separators - they are clipped to 1 automatically.
(4) 'Smart' case sensitivity is evaluated per word.
It simply uses this expression to get triggered:
if ( word != lowcase(word) ) ...
Example: 'C init' matches all symbols containing a 'C' (case sens.) and 'init'/'Init'/'INIT'/... (not case sens.)
as long as global CaSe sensitivity is OFF. If the latter is ON it takes precedence of course.
Note: The current CaSe sens. setting is visualized in title / status line as follows:
CaSe sens. ON -> '101 TAGS- in ...' ('TAGS' upcase)
CaSe smart sens. ON -> '101 Tags~ in ...' ('Tags' capitalized)
CaSe (smart)sens. OFF -> '101 tags~ in ...' ('tags' lowcase)
Also note the appended
'~' /
'-' char. This flags the current word order setting as follows:
Strict word order ON -> '101 TAGS- in ...' ('-' appended)
Strict word order OFF -> '101 TAGS~ in ...' ('~' appended)
(5) If enabled it can be skipped by pressing SHIFT/CTRL modifiers with ENTER or vice versa.
(6) The context menu can be activated by shortcut (default 'ALT-M') or by r-clicking the filter box / symbol tree.
Configuration is persistent (stored as 'def_' variables:
def_ols_tag_filter,
def_ols_flags).
There is still a 'hardwired config definitions' section at the beginning of the module.
It needs to be changed manually to setup e.g. user tag filter, fonts and the pseudo cursor (GUI config would be too much effort).
Don't forget to re-load the module to make the changes take effect.
I've added comments to the configuration and event handler stuff at the beginning of the module.
It could be useful to have look at it.
Also I don't list all keybindings here - please refer to the event handler definitions in the module (@see
defeventtab open_local_symbol).
Most often used things as the quick tag filters have 'direct' keybindings corresponding to the accelerators in the context menu.
Although some of the new Slick-C language enhancements (SE >= v12) are used the module could be backported to v11 at least.
I've put 'open_local_symbol2.e' and a patched version of 'tagwin.e' into a hotfix package.
'tagwin.e' contains the patch related to the Preview TB described here:
http://community.slickedit.com/index.php?topic=2371.msg9859#msg9859I'll take care about 'tagwin.e' too in case 'tagwin.e' gets hotfixed.
However, it's not absolutely necessary to install it (although recommended) b/c 'open_local_symbol2.e' is compatible to the original version.
Just unzip it and load it manually in this case.
Feedback, questions and/or change proposals are appreciated ! I'll see what I can do.
But for sure it will be maintained since I'm heavily using it ;)
Have fun,
HS2
Edit: Added a note to
(4)