Download
(14 Kb)
Download
Updated: 09-14-13 04:39 PM
Pictures
File Info
Compatibility:
Siege of Orgrimmar (5.4)
Escalation (5.3)
Thunder Isle (5.2)
Landfall (5.1)
Mists of Pandaria (5.0.4)
Updated:09-14-13 04:39 PM
Created:11-03-08 07:07 PM
Downloads:5,227
Favorites:108
MD5:
5.4
SlashHelp  Popular! (More than 5000 hits)
Version: 4.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.
v4.2 (2012-09-26)
-Quick patch to the scanner fixes an unhandled error with some addons.

v4.1 (2011-11-29)
-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. (Didn't reference far enough back to update listing)
-Corrected version number in TOC file.

v3.0 (2010-08-06)
-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. (Slightly shorter codebase.)

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. (Sets off Blizzard's taint code)

v1.1 (2006-12-10)
-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. (Does not execute command until Enter is pressed)
Post A Reply Comment Options
Unread 03-20-13, 10:59 AM  
SDPhantom
A Molten Giant
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 994
File comments: 67
Uploads: 17
Re: slight confusion on my part

Originally Posted by Barleduq
The front page of this addon says it's version 4.2, updated on March 7th, 2013. The changelog says it's version 4.2 updated in September ...

Is the changelog out of date, or the file version number, or... ?

Just checking as part of deciding if I want to add this to my collection of addons...
The changelog is correct. The website is noting that I updated the TOC interface number recently, which IMO doesn't constitute a version change or a note in the changelog. This addon continues to perform to my expectations and hasn't needed any modifications since the update noted in the changelog.
__________________
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
SDPhantom is offline Report comment to moderator  
Reply With Quote
Unread 03-15-13, 05:24 PM  
Barleduq
Ruler of All I Survey
 
Barleduq's Avatar

Forum posts: 62
File comments: 261
Uploads: 0
slight confusion on my part

The front page of this addon says it's version 4.2, updated on March 7th, 2013. The changelog says it's version 4.2 updated in September ...

Is the changelog out of date, or the file version number, or... ?

Just checking as part of deciding if I want to add this to my collection of addons...
Barleduq is offline Report comment to moderator  
Reply With Quote
Unread 09-26-12, 01:50 AM  
SDPhantom
A Molten Giant
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 994
File comments: 67
Uploads: 17
Version 4.2 is out with a quick patch to the scanner that resolves an error that rises when an addon attempts to set nil to a new SlashCmdList entry. The same check is also applied to the hidden feature of detecting direct hash_SlashCmdList injections.
__________________
"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 : 09-26-12 at 01:55 AM.
SDPhantom is offline Report comment to moderator  
Reply With Quote
Unread 11-29-11, 10:42 PM  
SDPhantom
A Molten Giant
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 994
File comments: 67
Uploads: 17
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.
__________________
"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.
SDPhantom is offline 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.
doom0r is offline Report comment to moderator  
Reply With Quote
Unread 11-04-10, 03:29 AM  
SDPhantom
A Molten Giant
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 994
File comments: 67
Uploads: 17
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.
__________________
"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.
SDPhantom is offline Report comment to moderator  
Reply With Quote
Unread 10-26-10, 12:15 AM  
SDPhantom
A Molten Giant
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 994
File comments: 67
Uploads: 17
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.
__________________
"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.
SDPhantom is offline 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
doom0r is offline Report comment to moderator  
Reply With Quote
Unread 10-25-10, 03:31 AM  
SDPhantom
A Molten Giant
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 994
File comments: 67
Uploads: 17
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.
__________________
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
SDPhantom is offline 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
doom0r is offline Report comment to moderator  
Reply With Quote
Unread 10-24-10, 12:49 PM  
SDPhantom
A Molten Giant
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 994
File comments: 67
Uploads: 17
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.
__________________
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
SDPhantom is offline 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.
doom0r is offline Report comment to moderator  
Reply With Quote
Unread 08-05-10, 11:40 PM  
SDPhantom
A Molten Giant
 
SDPhantom's Avatar
AddOn Author - Click to view AddOns

Forum posts: 994
File comments: 67
Uploads: 17
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.
__________________
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
SDPhantom is offline 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.
PilsnerDk is offline Report comment to moderator  
Reply With Quote
Unread 06-23-10, 01:46 PM  
nomad980
A Kobold Labourer

Forum posts: 1
File comments: 13
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.
nomad980 is offline Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: