>> You do mean that /wind expands to /window if it matches nothing else (an
>> internal feature of the client) instead of some script feature, correct?
>
>No, I don't mean that.
>
>I mean that if cmdchar is '!' for example, and I type "!ser<TAB>", it 
>expands to "!ser: ", as if I typed a nickname, while if I type "\ser<TAB>", 
>it shows me two alternatives, "SERVER" or "SERVLIST".

To start with, I would need to look at what your tab key is bound to.
You can find this out by doing /bind ^I at the input prompt.  It probably
calls an alias (via parse_command), and if you could include that alias,
that would be most helpful.

EPIC only has one mechanism for doing command completion, and that is the
COMMAND_COMPLETION key binding.  By default, this is bound to ESC-ESC:

                /bind ^[^[ COMMAND_COMPLETION

When you invoke command_completion (handled by the command_completion() 
function, natch), it looks to see if the input line begins with either a 
slash or one of the command characters:

                [....]
                if (!(cmdchars = get_string_var(CMDCHARS_VAR)))
                        cmdchars = DEFAULT_CMDCHARS;

                if (*com == '/' || strchr(cmdchars, *com))
                {
                        [....]

So if you directly invoke COMMAND_COMPLETION, it works quite happily if your
command character is not /.  I have tested this to make sure.

Some scripts try to be "smart" about tab completion and do content-sensitive
multiplexing.  The alias might do something like this:

        bind ^I parse_command {
                if (left(1 $L) == [/]) {
                        parsekey command_completion
                } else {
                        [... do nickname completion ...]
                }
        }

This should be changed to:

        bind ^I parse_command {
                if (index($left(1 $L) $K) > -1) {
                        parsekey command_completion
                } else {
                        [... do nickname completion ...]
                }
        }

The change here is that we compare the first character on the input line
[$left(1 $L)] to the command characters [$index(... $K)].  $index returns 
-1 if the character was not found, and > -1 if found.  This is better than
just comparing the first character to the slash.

Clearly the defect would seem lie with the script you are using.  I encourage
you to file a defect report with the script's author.  The problem can easily
be remedied.

Thanks for being willing to report a bug in epic, but unfortunately, I do
not believe this is an epic issue.  If you have any further questions, feel
free to ask.

Jeremy Nelson
_______________________________________________
List mailing list
[EMAIL PROTECTED]
http://epicsol.org/mailman/listinfo/list

Reply via email to