Download
(7Kb)
Download
Compatible with Retail, Classic & TBC
Updated: 03-15-24 05:48 PM
Pictures
File Info
Compatibility:
Classic (1.15.1)
Seeds of Renewal (10.2.5)
Classic (1.15.0)
Guardians of the Dream (10.2.0)
WOTLK Patch (3.4.3)
Hot Fix (10.1.7)
Classic (1.14.4)
Fractures in Time (10.1.5)
WotLK Patch (3.4.2)
Dragonflight patch (10.0.7)
Embers of Neltharion (10.1.0)
WOTLK Patch (3.4.1)
Dragonflight patch (10.0.5)
Dragonflight (10.0.2)
Updated:03-15-24 05:48 PM
Created:11-03-08 07:07 PM
Downloads:7,684
Favorites:117
MD5:
Categories:Chat Mods, The Burning Crusade Classic, Classic - General, WOTLK Classic

SlashHelp  Popular! (More than 5000 hits)

Version: 5.2
by: SDPhantom [More]

SlashHelp enables the user to search all registered emotes, chat types, and slash commands as they type.
SlashHelp includes within the result list, any slash commands registered by other AddOns as well.

Contact:

I'm open to questions and suggestions. Feel free to message me here or post in the comments.
I'm also available for support on the WoWUIDev Discord, @mention me (SDPhantom) or send a DM.

v5.2 (2021-09-16)
-Multi-ToC build implemented

v5.1 (2020-11-26)
-Removed ChatFrame_ImportAllListsToHash() calls to mitigate command registration errors with some addons
Note: "Mitigate" doesn't mean "Fix". These are still bugs in the affecting addons, not SlashHelp.

v5.0 (2020-10-14)
-Tested for Shadowlands v9.0.2
-Heavily optimized scanner code
-Completely rewritten GUI

v4.2 (2012-09-26)
-Quick patch to the scanner fixes an unhandled error with some addons.

v4.1 (2011-11-29)
-WoW v4.3.0 Support
-Quick patch to the scanner fixes a conflict with Blizzard's new slash command code.

v4.0 (2010-11-04)
-Tested for Cataclysm v4.0.3
-New multi-stage command scanner for optimized run-time performance
*Initial scanner scans for all slash commands on-load (chat, emote, secure, and normal).
*Progressive scanner loads additional commands as they are registered.
*Filter runs as you type, filtering through a presorted cache.
-Scanners cache and sort only when new commands added.
-Sort and type filter preferences are now saved across sessions.
-Tooltips display token identifier, chat type, aliases, and if available, addon information.
-Clean client runs new filter at 2ms, compared to 280ms that v3.1 ran at

v3.1 (2010-09-08)
-Configuration window works properly again.
-Corrected version number in TOC file.

v3.0 (2010-08-06)
-WoW v3.3.5 Support
-New display code allows the command list to be shared among multiple edit boxes.
-New scroll indicator shows position in the list.
-API for AddOn support partially implemented. (Custom positioning not supported)

v2.2 (2008-11-03)
-Made the slash command detection a little more robust.
-Completely removed auto-complete. (You can hit Tab to have the default UI do this.)

v2.1 (2008-08-16)
-Changed a few string function calls to the object-oriented style.

v2.0 (2007-08-18)
-Remade detection code to scan through the slash globals instead of from the function table.
-Removed auto-complete ability from secure commands.

v1.1 (2006-12-10)
-WoW 2.0.1 Support
-Added the new secure slash commands implemented by Blizzard.

v1.0 (2006-11-20)
-Scans and detects all emotes, chat types, and slash commands. (Even those registered by other addons)
-Option to sort alphabetically or by command type.
-Able to filter by type. (Emote, Chat, or Command)
-Scrollable list of found commands.
-Autocomplete feature implemented when a command from the list is clicked or the search returns only one command.
Post A Reply Comment Options
Unread 11-29-11, 10:42 PM  
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2325
File comments: 132
Uploads: 38
SlashHelp 4.1 - Update required for WoW 4.3.0

Version 4.1 is a quick fix to patch the scanner code so it doesn't interfere with Blizzard's new slash command code. This is required for WoW 4.3.0 as using the older version causes errors which completely breaks the chat/command system in WoW.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
Last edited by SDPhantom : 11-30-11 at 02:37 PM.
Report comment to moderator  
Reply With Quote
Unread 11-04-10, 04:29 PM  
doom0r
A Kobold Labourer

Forum posts: 0
File comments: 7
Uploads: 0
i must say, simply amazing

I've went from lagging a second til the initial full list loads to ZERO noticable change, even while in combat, and with no taint.

Your efforts are much appreciated.
Report comment to moderator  
Reply With Quote
Unread 11-04-10, 03:29 AM  
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2325
File comments: 132
Uploads: 38
SlashHelp 4 is up. Scan times remain the same as posted below, Sort times increased to 60ms due to the requirement of proper sorting considering case-sensitivity. This shouldn't impact run-time performance since scanning and sorting is only done when commands are added. Command filtering that does execute at run-time is greatly improved through use of internal presorted command caches. Current filtering code is timed at a max of 2ms. This includes time spent updating the list frame UI.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
Last edited by SDPhantom : 11-04-10 at 03:30 AM.
Report comment to moderator  
Reply With Quote
Unread 10-26-10, 12:15 AM  
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2325
File comments: 132
Uploads: 38
I'm finishing off the new scanner code that comes in 2 parts. The first is the initial scanner, which detects all commands loaded so far (chat, emote, secure, and normal commands). This is still fairly slow, but only runs on login. The times for this so far is 271ms scan, 2ms sort, 273 ms total.

The second is a progressive scanner, which runs off a triggering metatable hooked into SlashCmdList. The hook stores which tokens have been added and the progressive scanner adds them to the command data cache and resorts the command order caches. After the trigger is set, the progressive scanner runs once per token OnUpdate. After which, the trigger is cleared and the scanner waits. Times for this scan are 2ms scan, 2ms sort, 4ms total.

The command order caches are for the filtering code to assemble a presorted command list quickly while typing in a command. I'll post times for that when I finish that part of the code.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
Last edited by SDPhantom : 10-26-10 at 12:16 AM.
Report comment to moderator  
Reply With Quote
Unread 10-25-10, 10:46 PM  
doom0r
A Kobold Labourer

Forum posts: 0
File comments: 7
Uploads: 0
Good to hear.

As far as the times, with something around 50+ addons and things like PitBull 4 registering 8 commands alone, it adds up when you hit slash and a couple letters very fast to type a command you know already. Plus there is a lot more global usage again in addons.

Thanks, looking forward to a rewrite
Report comment to moderator  
Reply With Quote
Unread 10-25-10, 03:31 AM  
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2325
File comments: 132
Uploads: 38
Originally posted by doom0r
For comparison, with the amount of addons I have installed (nothing I don't use, and AddonLoader to reduce active) I lose a couple seconds when I hit slash. It's killer while engaged in an instance.
That could be the approach that I went for the sake of secure command detection. It currently does scan ALL globals to find slash commands. That would definitely change when I decide to rewrite the scanner.

Currently, these are the times recorded on an almost clean beta client.
Scan: 246ms
Sort: 45ms
Total: 291ms

I guess I just didn't notice that much time go by while typing commands.


From what it looks like, on OnTextChanged you're wiping the table and rebuilding the list, then sorting it.
Forgot I had already changed it from an OnUpdate handler. Shows how much of a hurry I was in to get it 3.3.5-compliant. The scanner code hasn't changed any since BC launched.


I don't know the impact (I assume near nil), but what about watching ADDON_LOADED and only rebuild if that's been fired since the last time you had focus? (and only build the secure and emote list(doesn't change either?) at load like you said) Keep this unless it changes.
The scan times would most likely improve with the change in method planned. I'll look into this and other solutions as well.


Saving the selection choices would be nice. The XML causes it to default to all on.
I was planning on adding this, but it kept getting put aside. I'll get to it eventually.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
Report comment to moderator  
Reply With Quote
Unread 10-24-10, 11:44 PM  
doom0r
A Kobold Labourer

Forum posts: 0
File comments: 7
Uploads: 0
Originally posted by SDPhantom
I'll see what I can come up with, 3 out of 4 things listed I already had in. The last mentioned interferes with Blizzard's slash command handler and modifying text in an editbox causes taint. This prevents secure slash commands from running.
I kinda figured that. (but it was 3AM and too late to check ;x )

In my own testing and constant use, it's working as intended without much if any impact on framerate.
I'm definitely grateful for the gratis work and that you share it with all of us. However for comparison, with the amount of addons I have installed (nothing I don't use, and AddonLoader to reduce active) I lose a couple seconds when I hit slash. It's killer while engaged in an instance.

The only improvements I could think of is rewrite the command scanner to find the secure slash commands on load. They can only be defined in ChatFrame.lua and aren't able to be modified. For normal commands, I could go back to scanning from SlashCmdList. I'll also look into an event-driven approach using OnFocusGained/OnFocusLost and OnTextChanged/OnTextSet.
From what it looks like, on OnTextChanged you're wiping the table and rebuilding the list, then sorting it. That first lookup and sort is pretty harsh. I don't know the impact (I assume near nil), but what about watching ADDON_LOADED and only rebuild if that's been fired since the last time you had focus? (and only build the secure and emote list(doesn't change either?) at load like you said) Keep this unless it changes.

In other words, only build it if it's changed and then only sort when you need to load it. If nothing has changed since last edit focus, then you'd only be building your display until another character is entered, at which point for every character you're sorting a smaller chunk which is a much, much smaller impact.

Oh, and saving the selection choices would be nice. The XML causes it to default to all on.

Thanks
Report comment to moderator  
Reply With Quote
Unread 10-24-10, 12:49 PM  
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2325
File comments: 132
Uploads: 38
Originally posted by doom0r
instead of grabbing a fresh list everytime you update, how about

-making a table that only updates during your SetOwner function
-recycle it when done
-work out of that while editbox is active
-only build the table and start working after a user enters something like //
...
still use sub to check for the first /, but then switch to the existing command lookup after // and start the edit box with / again
I'll see what I can come up with, 3 out of 4 things listed I already had in. The last mentioned interferes with Blizzard's slash command handler and modifying text in an editbox causes taint. This prevents secure slash commands from running.

Part of the code design was to prevent excessive CPU use when scanning isn't necessary. In my own testing and constant use, it's working as intended without much if any impact on framerate.

The only improvements I could think of is rewrite the command scanner to find the secure slash commands on load. They can only be defined in ChatFrame.lua and aren't able to be modified. For normal commands, I could go back to scanning from SlashCmdList. I'll also look into an event-driven approach using OnFocusGained/OnFocusLost and OnTextChanged/OnTextSet.

There's a list of other changes I want to do which equates in total to another complete rewrite. The change to version 3.0 was just to regain full operation with the new IM style chat frames. Version 3.1 was a minor fix to the options frame.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
Report comment to moderator  
Reply With Quote
Unread 10-24-10, 01:52 AM  
doom0r
A Kobold Labourer

Forum posts: 0
File comments: 7
Uploads: 0
instead of grabbing a fresh list everytime you update, how about

-making a table that only updates during your SetOwner function
-recycle it when done
-work out of that while editbox is active
-only build the table and start working after a user enters something like
Code:
//
you can have a generic frame showing a single command listing for it with a description of something along the lines of "Command list" (still use sub to check for the first /, but then switch to the existing command lookup after // and start the edit box with / again)

would avoid all the rate drop when not searching for a command and always have a current list in the case of LoD
Last edited by doom0r : 10-24-10 at 01:53 AM.
Report comment to moderator  
Reply With Quote
Unread 08-05-10, 11:40 PM  
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2325
File comments: 132
Uploads: 38
Re: Busted in 3.3.5

Sorry I've been out for a while.

The change they did in 3.3.5 was to change the existing chat system to an IM style. There's now multiple edit boxes to manage, one for each chat frame. I'm working on new display code to help manage this and also give API support for compilation authors.

As far as CPU consumption, all the work is done in one frame each time the text in the associated edit box changes. The method used to scan for slash commands searches through all top level global variables. This is to find secure commands as the secure variant of SlashCmdList is stored as a local variable in ChatFrame.lua.

This'll be version 3.0 and I'll see about improving performance in the command search code in a later version.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
Report comment to moderator  
Reply With Quote
Unread 06-30-10, 01:13 PM  
PilsnerDk
A Kobold Labourer

Forum posts: 0
File comments: 7
Uploads: 0
Busted in 3.3.5

Not only does it not work in 3.3.5, but it also reduced by framerate by around 75%. Better not use it, but hope it gets updated.
Report comment to moderator  
Reply With Quote
Unread 06-23-10, 01:46 PM  
nomad980
A Kobold Labourer

Forum posts: 1
File comments: 9
Uploads: 0
Originally posted by moonshade
The latest patch broke this, unfortunately. Something to do w/ the changes they made to the chatbox.
Change all instance of "ChatFrameEditBox" to "ChatFrame1EditBox". Temp fix till it is actually updated by the creator. Make sure you also change it in the xml file.
Report comment to moderator  
Reply With Quote
Unread 06-22-10, 09:23 PM  
moonshade
A Kobold Labourer

Forum posts: 0
File comments: 61
Uploads: 0
The latest patch broke this, unfortunately. Something to do w/ the changes they made to the chatbox.
Report comment to moderator  
Reply With Quote
Unread 12-30-09, 05:06 PM  
ShetiPhian
A Fallenroot Satyr
AddOn Author - Click to view AddOns

Forum posts: 23
File comments: 27
Uploads: 1
lol never thought of that. thanks
Report comment to moderator  
Reply With Quote
Unread 12-30-09, 05:02 PM  
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2325
File comments: 132
Uploads: 38
Might want to change the anchor on SlashHelpOptionsFrame the same way, otherwise the frame will hover down in the middle of the screen. This would be line 233 in the XML file.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: