CVS log for darkstar/modules/tabkey.dsm |
![]() |
Request diff between arbitrary revisions
Fix for $tabkey.method.notify().
* Reverted previous change to tabkey.dsm involving $match() and /xdebug dword * Change tabkey.default to call $tabkey.method.nickchannotify().
* Fix for using $match() with a quoted pattern in tabkey.dsm and formats.dsm.
Remove any calls to /xdebug new_math. We can now depend on the new math parser being the default.
Officially moving to EPIC5! * Fixed $getdsets(), $getfsets(), $loadedmods() and $mods() with EPIC5. * tabkey.dsm now works without /xdebug dword in EPIC5. * Updated darkstar.irc to require EPIC5 instead of EPIC4.
Fixed tabkey module to work with EPIC5 dword change.
* Add tabkey msg history entry for "no server" (-1) on DCC CHAT.
* Check for the existence of $uh() before attempting to use it in $tabkey.method.mask().
* Add global variable named LEVELS containing all valid window levels. * Use new LEVELS variable in tabkey.cmd.ignore and tabkey.cmd.window.
* Minor change to header comment.
* Add key binding for Esc-Tab in tabkey.dsm that does backward match cycling. * Remove Esc-Tab key binding in window.dsm. * Remove the TABKEY_CYCLE_MATCHES config variable.
* Do some cleaning up of the new match cycling code.
* Add support for backward match cycling in the tabkey module.
* Make $tabkey.method.chan() attempt completion with #/& prefix if first attempt fails.
Add context sensitive completion alias for /IG (tabkey.cmd.ig)
Make sure to $encode() any server refnums that are used as /ASSIGN variable names. It was brought to my attention by larne that it is possible for one of the server functions to return a negative refnum and '-' is not allowed in variable names.
Cleanup tabkey.method.variable a bit.
Remove $serverrefs() and replace all calls to it with calls to $myservers().
Make sure to reset the value of extractw when exiting tabkey.main early.
* Add a KNOWNBUGS file. * Remove takbkey.cmd.mhelp; /MHELP was removed in a previous commit.
Simplify the tabkey match cycling code and fix a bug reported by larne.
* Add a missing semi-colon in tabkey.cmd.window. * Fix a panic caused by the window_command hook calling window.msgwin.show.
DarkStar 0.3pre4 * Change the format of module headers. * Add support for loading modules with the PF loader. * Convert all scripts to the PF loader format. * Add support for multi-server msg windows. * Set CURRENT_WINDOW_LEVEL to ALL in darkstar.irc. This should prevent output that doesn't belong in a msg window from being sent to one. Hopefully it won't cause any problems for people with different setups than my own.
Okay, this is the big commit towards 0.3. This is not a release, but a very
early, alpha quality pre-release. A lot has changed so it's likely that I
will miss something here.
WARNING: This commit WILL break most themes and possibly some modules.
* Move the theme system out of the core. Theme support is now provided
by theme.dsm.
* Remove status.dsc and let all the statbar stuff be handled by themes.
* Add a separate help system for modules (/MHELP).
* Rename loader.dsc to modules.dsc.
* The module loader has had a complete overhaul. Many of the internal
structures and commands have changed and so has the UI, including:
- The *_VERBOSE config variables have been removed, along with
AUTO_LOAD_PROMPT (replaced by LOAD_PROMPT).
- New interface to the auto-load list: /AUTOLOAD
* Complete rewrite of save.dsc.
* config.dsc has been renamed to set.dsc and has also had an overhaul.
Of particular note is that the config.add and format.add aliases have
been deprecated and the new addconfig/addformat aliases should be used
instead. The internal structures have changed significantly here, too.
* Add CrazyEddy's command queueing system (/QCMD, /FQCMD, /Q1CMD, /FQ1CMD)
from the 'commandqueues' script distributed with EPIC4.
* Rename $bool_to_num() and $bool_to_onoff() to $bool2num() and $bool2word().
* Add a $chanvoice() function donated by |Rain|.
* Add a $getitems() function.
* Add two new set related fucntions: $getdsets() and $getfsets()
* Add a $visiblewins() function to return a list of currently visible window
refnums.
* All of the standard formats, like JOIN, PART, MSG, PUBLIC, etc. have been
moved into a single module named formats.dsm. This includes what was the
names module.
* The theme module is now responsible for allowing themes to set double on/off
for normal, non-fixed windows (msgwin/operview are fixed). This is done
using a new config var named DOUBLE_STATUS.
* Cleanup the msgwin/operview code and remove (almost) all references to one
from the other. They should now coexist peacefully without any knowledge of
each other.
* Update all themes regarding the recent changes. All of the previous theme
files have been removed and replaced by two files: core and formats.
* /MASSMODE and /TBAN will now try to get the max number of modes MODES (005).
* /WALL (type 2) now tries to get the max targets from MAXTARGETS (005).
* Add an easier interface to changing the nickmgr nick list: /NICKMGR
* Clear the UPDATES file.
Forgot to remove the old, commented, code.
Merge CrazyEddy's recent changes to tabkey.ce. This fixes a bug where recursion wouldn't work in the middle of a line and also makes it possible to tab complete /HELP without having to tab complete any of the previous words (this may not work on all operating systems).
Clean up last night's fix.
Fix the tabkey module for commit_id 613. EPIC now considers a single space by itself to be a word.
Fix tabkey.main so that it works with 610's $indextoword().
tabkey.method.variable was referencing $ret instead of $retval.
* tabkey.dsm 0.4:
- Most aliases now use function_return instead of /RETURN to return
their values. This is to avoid potential problems caused by the
auto-append feature in EPIC.
- The TABKEY_MAX_NICKHIST config variable has been renamed. It's now
called TABKEY_MAX_MSG_HISTORY.
- All of the completion methods (except tabkey.method.variable) have
been rewritten so that they use the arguments given to them instead
of taking what they need directly from $L. This is how the original
design intended completion methods to work.
- tabkey.method.arrays has been renamed to tabkey.method.array
- tabkey.method.variables has been renamed to tabkey.method.variable
- tabkey.addnicktohist renamed to tabkey.msg_handler
- General cleanup throughout module.
* Fixed a small bug in window.dsm that was related to the msg window.
Changing the value of the MSG_WINDOW_HIDDEN config variable could cause
a msg window to be created even if MSG_WINDOW was false.
* Merged CrazyEddy's tabkey.recurse alias. This allows for commands like /EVAL and /REPEAT to provide command completion for their commands. It works by recursively calling $tabkey.cmd() after offsetting the arguments on the input line. e.g. "/eval dcc <tab>" should work just like "/dcc <tab>" * Fixed a pesky little bug in the match cycling that was causing it to occasionally use the previous command's match list to cycle when it should have attempted to get new matches for the new command.
Modify $tabkey.method.nick(), $tabkey.method.chan(), and $tabkey.method.notify() so that they can properly handle completing words that contain the quote character '\'. Thanks to ratio for reporting this. Also, tabkey.main now uses erase_to_beg_of_line instead of erase_line.
Merge CrazyEddy's latest changes to tabkey.ce. The tabkey module now uses the new extractw feature in $wordtoindex().
Merge CrazyEddy's recent changes to tabkey.ce that improve handling of "evil" filenames. NOTE: This requires EPIC4-1.1.10 commit_id 464 to function properly.
Forgot to increment the module's version :)
I was mistakenly passing $0 instead of $1 to tabkey.addnicktohist in the send_ctcp hook. This was causing "=PRIVMSG" to be added to the msg history instead of "=<nick>".
Merge in CrazyEddy's recent changes to tabkey.ce that allow completion of "words" with spaces.
* Add a $tabkey.nofallback() function that the command handlers can pass their matches through before returning them. This prevents $tabkey.cmd() from falling back to tabkey.default if no matches are found. * $tabkey.cmd.help() should now ignore the CVS directory.
Modify tabkey.method.variables() so that it returns control to tabkey.main for the actual completion rather than handling things itself. It will now also return its matches with a hyphen preceeding each word if it is also the first character in the word being matched against. This means that you should now be able to cycle through the list of matches even when you are removing variables.
Rewrite the bottom of tabkey.main so that it constructs the new input line using $mid() and $wordind and stores it in a local variable. It then erases the entire input line with /parsekey erase_line and replaces it with the value in the local variable we just created. This should be quite a bit faster than the old behavior which was to call /parsekey backspace as many times as was needed to get to the insertion point for the completed word. Thanks to nirvana@efnet for bringing this to my attention.
Forgot to add a send_ctcp hook to the new tabkey module.
* Make sure that the tabkey module doesn't try to cycle through the list of possible matches when the input line is empty. * Add a new config variable called AUTO_QUERY_UPDATE to control whether queries are updated automatically on nick changes. This means that the existing AUTO_QUERY config variable now only controls whether or not queries are started automatically for incoming msgs, instead of controlling both features. Requested by baske. * Make both auto-query features safe for multi-server use.
Add support for the SEARCH_BACK and SEARCH_FORWARD window commands to tabkey.cmd.window. Rewrite the part of tabkey.method.variables that handles config and format variables so that it works with variables that have empty values.
When completing nicknames, tabkey.cmd.msg and tabkey.cmd.query should pass their return values through $pattern() before returning them. This is to ensure that nicks from the msg hsitory don't get included in the list of matches when they don't actually match the word on the input line. This was causing the call to $prefix() in tabkey.main to return nothing when there should have been matches.
The $nextword variable in tabkey.main should be local.
When completing args for certain window commands the matches were being stored in $ret prematurely, when they should have been stored in $list. This was causing completion for those commands to fail.
* $tabkey.cmd.foreach() was still trying to call $tabkey.method.aliasctl() instead of $tabkey.method.variables(). Oops. * Add support for /DHELP completion.
misc.dsm: * Make /NSLOOKUP be able to handle nicknames or hostnames/IPs and make /DNS a shortcut to it. * Remove the 2 second pause from the /ON connect hook responsible for setting your default user modes. I don't think this was really needed. tabkey.dsm: * Make sure that $TABKEY.LASTMATCHES isn't empty before trying to cycle (instead of checking $word). * Modify tabkey.cmd.msg and tabkey.cmd.query so that they return both the values of $TABKEY.MSGHIST[$winserv()] and $tabkey.method.nickchan($*) after being passed through $uniq(). * Move tabkey.default below tabkey.cmd.
* Check for a '=' as the first character of the nick being completed in $tabkey.cmd.msg(). If found, return the value of $TABKEY.MSGHIST.$winserv() instead of $tabkey.method.nickchan(). * Rewrite tabkey.method.mask so that it is simpler and actually passes the userhost through $mask() before returning it. Oops. ;-)
Add a new config variable named TABKEY_CYCLE_MATCHES to control whether or not continually pushing the tab key will try to cycle through the list of possible matches.
* Combine the functionality of tabkey.method.aliasctl and tabkey.method.config into a new method alias called tabkey.method.variables * Add an extra check in tabkey.main to ensure that we don't attempt to cycle matches when the current word is blank. * Change all calls to $tabkey.method.filei() to $tabkey.method.file() to cause completion to be case-sensitive.
Add support for cycling through the possible matches when the user continues to press the tab key.
Remove $CMDCHARS from the beginning of the string in $args _before_ the calls to $unsplit() and $pass(). We also need to add the value of $K, instead of a literal "/", to the beginning of all matches returned by $tabkey.method.commands(). This should finally mean that completion works regardless of the value of $CMDCHARS. Also note the fact that /GETNICK uses the internal notify list in the keepnick help page.
It seems a critical comment got left out somehow.
Fix tabkey.cmd so that it deals properly with a value of '.' for $CMDCHARS. Completion should now work regardless of the value of $CMDCHARS.
All new tabkey module! This new module is based on CrazyEddy's tabkey.ce
script and is a major improvement over the old module.
Things that differ from the old module (for users):
- Cursor sensitive. Allows you to complete words anywhere on
the input line.
- Support for /HELP completion.
- Support for /WINDOW completion.
- The TABKEY_NICK_HISTORY config variable has been renamed to
TABKEY_MAX_NICKHIST.
* Disallow a pattern of "ALL" in tabkey.addrule. This prevents someone from adding a rule with such a pattern and being unable to remove it with tabkey.rmrule. * General cleanup throughout tabkey.dsm
* Improved set related completion including the addition of the ability to have the set's current value placed on the input prompt, ready for editing. * Added completion rules for /q and /query that use the msg procedure to access the nicks in the msg history. They should now behave just like /msg. In order to make this work smoothly the msg procedure was modified to allow the passing of a single argument that will be used as the command to be placed on the input prompt before the nick. The default is still to use "msg". Both of these changes were requested by nirvana.
Added a new completion procedure called mask and 3 new completion rules, 2 of which use the new mask procedure. The mask procedure attempts to convert the last word on the input prompt (hopefully a nick) into a hostmask suitable for use with commands like /ignore and /ban. It will first try to get the userhost from the client's cache and, failing that, will query the server. The new rules add the hostmask completion described above for the /ignore and /ban commands as well as completion for the various ignore types.
Rename tabkey.proc.assign to tabkey.proc.aliasctl. It now handles completion of both assign variables and aliases. Add several new completion rules, mostly for commands in section 5 of the EPIC help files. Change all references to "word list" to "extra arguments". This seems a bit more fitting since the procedures can use these extra arguments for just about anything, not just lists of words to be completed.
Moved the space that is now on the end of TABKEY_NICKCOMP_SUFFIX back to tabkey.proc.nick. This is because TABKEY_NICKCOMP_SUFFIX is only appended when the word being completed is the first word on the input prompt and we still want the space even when we're not completing the first word.
Added a /tabkey alias which provides a user interface for mucking with the completion rules, and replaces the /cleartab alias. This adds the ability to save the current rule set to $DS.SAVE_DIR/tabkey.rules which, when present, will replace the default rules. During all of this, I was also able to solve some of the annoying issues when dealing with a pattern of "" as well as clean up some of the existing code.
Update the ChangeLog and add darkstar.nuthouse.org to the README. Stop appending a space to $CONFIG.TABKEY_NICKCOMP_SUFFIX when a nickname is successfully completed. Instead, the space was added to the actual value of the TABKEY_NICKCOMP_SUFFIX config variable. Copied the values of the MODLIST_* format variables in the darkstar theme to the defaults located in darkstar.irc. Also added a small "Loading DarkStar <version>" msg in darkstar.irc.
Make tabkey.proc.assign deal with a leading "-" correctly, allowing for completion when removing variables. Also made a few related changes to the tabkey.set_proc alias.
Added two new completion procedures in tabkey.dsm. They are tabkey.proc.assign and tabkey.proc.generic. Several new rules were also added for /assign, /push, /pop, /shift, and /unshift using the new assign procedure. Minor change to /loadmod and /unloadmod when VERBOSE_LOAD is false. The name of the module that was loaded last is no longer replaced with "DONE" when all the modules have finished (un)loading.
* Some minor cleanup in various modules. * Changed the behavior of /reloadmod a bit. It now unloads all modules before reloading any of them. The old behavior was to unload and reload each module one at a time.
Same sort of cleanup and organizational changes as the previous commit, but done to all the modules.
- Added a /tig alias to misc.dsm - I renamed some of the arrays used by modules so that they clearly belong to that module. i.e. "tban" becomes "channel.tban".
* Added two new functions to functions.dsc: $ansicparse() and $serverrefs(). * Updated tabkey.dsm to use $serverrefs() and removed $tabkey.get_server_refnums(). * Added two new aliases to channel.dsm: /mme and /msay * Update the ChangeLog.
* The name of the script pack has been officially changed from Darkstar to DarkStar. Things have been updated accordingly. * Added a guide to modules (doc/modules.txt). * More changes to the darkstar and feedback themes.
* tabkey.dsm 0.6.4 - Moved the /BEEP in tabkey.show_results so that it beeps every time it is called. * Had an unneeded /EVAL in darkstar.irc * More color fixes in the bitchx statbar
Added a function called tabkey.get_server_refnums with goes through the return value of $winrefs() and returns the refnums of all your active server connections. This function is now used by the DCC related /on hooks to call tabkey.addnick for all servers you are connected to. This is because DCC CHAT connections are not server specific and something like this must be done in order to support DCC CHAT in the msg history. Hopefully this fixes the last of the issues here.
We were using a true/false conditional statement in tabkey.addnick to check for a server refnum (a required argument). The problem is that "0" is a valid refnum but is interpreted as false. We now check specifically for an empty value.
Fixed a bug where nicks were not being properly added to the msg history when establishing a DCC CHAT connecion. This was due to the fact that $servernum() returns -1 in the dcc_connect hook and "-" is not allowed in variable names. Error msg: ASSIGN names may not contain '-' (You asked for [TABKEY.NICKS.-1]) ASSIGN names may not contain '-' (You asked for [TABKEY.INDEX.-1])
* Minor changes to /DINFO * Fixed a bug in tabkey.dsm that was causing the msg completion to not properly keep track of multiple server connections.
* The core scripts were still depending on $LOADER.PENDING_MODULE and as
a result were not having their config/format variables added properly.
* New theme: feedback
* Further updates to the README.
* [window.dsm] Removed the AUTO_BIND_ON_WINDOW_JOIN config variable since it
was redundant. The existing AUTO_BIND_ON_JOIN should do the trick.
* Added help pages for all the included modules. They are located in
$DS.HOME/help/3_modules/.
* Changes to the layout of the help directory.
1_Core -> 1_core_commands
New section: 2_core_functions
* Various other little changes for 0.2.0
* The 'darkstar' and 'feedback' statbars now exempt any windows listed
in the single_status array from getting double turned on. This replaces
the previous nasty little hack.
* Small changes to /DINFO.
Added tabkey.rmrule so that other modules can remove completion rules from within their cleanup queue.
* /PURGE now purges alias and assign structures. * Changes to the way module info lines work. Rather than add info lines to the "modinfo" array they will be kept in the MODINFO assign structure within a sub-structure named after the module. As such, module.info and module.rminfo have been removed.
* Added completion procedure and rule for /theme.
* /dinfo now displays any lines contained within the modinfo array.
* Fixed a bug in keepnick.dsm that would cause getnick to be deactivated
when your current nick matched CONFIG.KEEPNICK_NICK but CONFIG.KEEPNICK
was false.
* Module loader related commands intended for use by modules will now be
located in the module structure. This should be much more clear.
The changes:
loader.dependency -> module.dep
loader.load_saved_settings -> module.load_saved_settings
New additions: module.info, module.rminfo
New headers in the modules.
Cleanup.
Improvements to some of the channel related completion rules.
Changed the default value of CONFIG.TABKEY_NICKCOMP_SUFFIX to ","
Fixed a bug in tabkey.proc.nick related to CONFIG.TABKEY_NICKCOMP_SUFFIX.
Fix to tabkey.proc.command to support command completion on aliases as well as builtin commands.
tabkey.addnick was not being called properly from the various /on hooks causing tabkey.proc.msg to not work.
Added tabkey.proc.set using $getsets() and we now have scripted command completion via $getcommands().
* loader.get_saved_settings renamed to loader.load_saved_settings. * General cleanup throughout the core scripts. * /DSET THEME should now work correctly with the new "CONFIG *" hook event. * Changed all occurrences of "elsif" with "else if". * Removed the ASCII Darkstar logo from the module headers.
* Fiexed a bug in tabkey.show_matches * Forgot to make tabkey.set_proc use tabkey.show_matches
Removed tabkey.complete and added tabkey.show_matches. The rest of the functionality that was in tabkey.complete is now handled individually by each procedure.
Had some misnamed variables in tabkey.set_proc
Fixed small bug in tabkey.dsm.
* Loading and unloading modules now triggers a HOOK event so that other modules can act on it. * Small adjustments to tabkey.display_rules.
Rewrote large portions of the tabkey module. Now supports the use of "completion procedures" which will automatically be available for use with the "completion rules".
Small corrections.
Cleanup.
Mostly fixes in tabkey.dsm
Small correction.
Oops. ;-)
Added support for dynamic completion rules in tabkey.dsm.
Added support for module versions.
Rewrote status.dsc and themes.dsc.
* [window.dsm] We now cleanup keybindings and kill the msg window when the module is unloaded. * Added loader.get_saved_settings for forcing the loading of saved settings before a module is finished loading. * [tabkey.dsm] Both tabkey.channel_routine() and tabkey.nick_routine() now handle \'s correctly.
tabkey.nick_routine() can now handle nicks containing "\"
Added $: to list of nicks in tabkey.nick_routine().
Changes to the way config and format variables are added. Modules will now add them from within the .dsm file using /config.add and /format.add. All .def files have been removed.
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
Added command completion support.
*** empty log message ***
Uncommented /queue stuff and got rid of some $common()s
Imported 0.0.8
Initial revision
| CVS Admin |
Powered by ViewCVS 0.9.2 |