From: Bart Schaefer <schaefer@brasslantern.com>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: zsh-workers@zsh.org
Subject: Re: zle messes up 'words' variable?
Date: Tue, 03 May 2011 07:39:00 -0700 [thread overview]
Message-ID: <110503073902.ZM15889@torch.brasslantern.com> (raw)
In-Reply-To: <BANLkTiktPbzZ4v=NSNkP5CV78ctSTQ9gsg@mail.gmail.com>
On May 3, 11:05am, Felipe Contreras wrote:
}
} The fact that it's documented as a special variable doesn't mean that
} the behavior should be totally unexpected.
}
} 1) Without modifier
}
} Then 'words' can be re-used like any other variable.
}
} 2) With 'local' modifier
}
} Then modifying 'words' has an impact only on the current function, not
} on the scope where the variable was defined as local.
Ahh, I see the problem. You haven't read the entire documentation.
At the very top of (what in the info file is) section 19.2 is this
paragraph (caps mine for emphasis):
Inside completion widgets, AND ANY FUNCTIONS CALLED FROM THEM, some
parameters have special meaning; outside these functions they are
not special to the shell in any way. These parameters are used to
pass information between the completion code and the completion
widget. Some of the builtin commands and the condition codes use or
change the current values of these parameters. Any existing values
will be hidden during execution of completion widgets; EXCEPT FOR
COMPSTATE, THE PARAMETERS ARE RESET ON EACH FUNCTION EXIT (INCLUDING
NESTED FUNCTION CALLS FROM WITHIN THE COMPLETION WIDGET) to the
values they had when the function was entered.
In other words, these variable are always local in all scopes, unless
they are explicitly declared otherwise (which in this case requires
the use of typeset -h). That's part of their special-ness, and is one
of the things I assert is extremely unlikely to change.
} 2.1) When using #compdef tag
}
} Then 'words' can be modified like any other variable.
I thought you'd decided you were unable to reproduce this? If you now
*are* able to reproduce it, then *that* might be a bug.
} 3) With 'typedef -h'
}
} Then 'words' can be modified like any other variable.
}
} I was expecting an explanation of these discrepancies, and a way to
} globally make 'words' work as expected without having to replace each
} use of 'local' by 'typedef -h'.
I apologize for not understanding the source of the mis-understanding.
I was focusing on why #compdef might make a difference, not on the
details of the actual scoping problem you perceived.
} > If what you want to discuss is ways to fix bashcompinit so that the
} > functions in bash completion work as expected, that's one thing. If
} > what you're asking is for the special-ness of "words" to be undone
} > for completion in general, that's so unlikely to happen as to not be
} > worth continuing.
}
} You are not good at compartmentalizing aren't you?
I'm really disappointed in the way that mailing list discourse in
general lately (and not just on this list) tends to rapidly descend
into insults and ad-hominem attacks. I've been watching the CentOS
list collapse under the weight of this sort of thing and I plead that
we try to avoid it here.
} If you fix the issue with my example, you fix the issue with
} bashcompinit. It's the same issue. Or "riddle" if that word makes you
} more comfortable.
No, it's not the same issue, because bashcompinit has responsibility
for loading the bash completion functions in a way that makes them
compatible. That's not the same as first loading bashcompinit and
then independently defining a new completion, though I lean toward
the conclusion that use of the bash-compatible "complete" command is
probably the correct place to fix this if it can be managed.
--
next prev parent reply other threads:[~2011-05-03 14:39 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-27 8:26 Felipe Contreras
2011-04-27 9:02 ` Jérémie Roquet
2011-04-27 9:11 ` Felipe Contreras
2011-04-27 9:51 ` Felipe Contreras
2011-04-27 15:06 ` Bart Schaefer
2011-04-28 20:19 ` Felipe Contreras
2011-04-29 3:31 ` Bart Schaefer
2011-05-02 18:11 ` Felipe Contreras
2011-05-03 1:42 ` Bart Schaefer
2011-05-03 8:05 ` Felipe Contreras
2011-05-03 14:39 ` Bart Schaefer [this message]
2011-05-03 15:04 ` Bart Schaefer
2011-05-03 17:41 ` Felipe Contreras
2011-05-04 0:39 ` Bart Schaefer
2011-05-05 14:39 ` Felipe Contreras
2011-05-05 16:24 ` Bart Schaefer
2011-05-05 16:40 ` Felipe Contreras
2011-05-05 19:38 ` Bart Schaefer
2011-05-05 20:14 ` Felipe Contreras
2011-05-05 21:12 ` Nikolai Weibull
2011-05-03 17:36 ` Felipe Contreras
2011-05-04 0:56 ` Bart Schaefer
2011-05-05 14:48 ` Felipe Contreras
2011-05-05 15:50 ` Bart Schaefer
2011-05-05 15:55 ` Felipe Contreras
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=110503073902.ZM15889@torch.brasslantern.com \
--to=schaefer@brasslantern.com \
--cc=felipe.contreras@gmail.com \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).