mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-26 04:30:27 +01:00
22013: initial go at a working zsh-newuser-install
This commit is contained in:
parent
e14491ea7f
commit
325a7c0417
5 changed files with 1098 additions and 37 deletions
|
|
@ -1,3 +1,9 @@
|
||||||
|
2005-11-23 Peter Stephenson <pws@csr.com>
|
||||||
|
|
||||||
|
* 22013: INSTALL, NEWS, Completion/compinstall,
|
||||||
|
Functions/Newuser/zsh-newuser-install: initial go at a
|
||||||
|
working zsh-newuser-install function.
|
||||||
|
|
||||||
2005-11-22 Clint Adams <clint@zsh.org>
|
2005-11-22 Clint Adams <clint@zsh.org>
|
||||||
|
|
||||||
* 22012: Completion/Debian/Command/_mergechanges:
|
* 22012: Completion/Debian/Command/_mergechanges:
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Configure the completion system.
|
||||||
|
|
||||||
emulate -L zsh
|
emulate -L zsh
|
||||||
setopt extendedglob
|
setopt extendedglob
|
||||||
|
|
||||||
|
|
@ -25,11 +27,25 @@ __ci_newline() {
|
||||||
|
|
||||||
typeset startline='# The following lines were added by compinstall'
|
typeset startline='# The following lines were added by compinstall'
|
||||||
typeset endline='# End of lines added by compinstall'
|
typeset endline='# End of lines added by compinstall'
|
||||||
typeset ifile line fpath_line compinit_args
|
typeset ifile line fpath_line compinit_args opt detect basic line2
|
||||||
typeset -A styles
|
typeset -A styles
|
||||||
typeset match mbegin mend warn_unknown warn_old warn_comment
|
typeset match mbegin mend warn_unknown warn_old warn_comment output
|
||||||
integer lines_found
|
integer lines_found
|
||||||
|
|
||||||
|
while getopts "do" opt; do
|
||||||
|
case $opt in
|
||||||
|
(d)
|
||||||
|
# Detect an existing compinstall setup.
|
||||||
|
detect=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
(o)
|
||||||
|
# Output basic setup information only.
|
||||||
|
basic=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check the user's .zshrc, if any.
|
# Check the user's .zshrc, if any.
|
||||||
#
|
#
|
||||||
|
|
@ -60,6 +76,40 @@ else
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -n $detect ]]; then
|
||||||
|
__ci_tidyup
|
||||||
|
[[ $foundold = true ]]
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
__ci_output() {
|
||||||
|
print -r "$startline"
|
||||||
|
[[ -n $output ]] && print -r "$output"
|
||||||
|
if [[ -n $ifile ]]; then
|
||||||
|
line="zstyle :compinstall filename ${(qq)ifile}"
|
||||||
|
print -r "$line"
|
||||||
|
eval "$line"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -n $fpath_line ]] && print -r "$fpath_line"
|
||||||
|
|
||||||
|
print -r "
|
||||||
|
autoload -Uz compinit
|
||||||
|
compinit${compinit_args:+ $compinit_args}"
|
||||||
|
|
||||||
|
print -r "$endline"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -n $basic ]]; then
|
||||||
|
__ci_output
|
||||||
|
__ci_tidyup
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
local newifile=$ifile
|
local newifile=$ifile
|
||||||
if [[ $foundold = true ]]; then
|
if [[ $foundold = true ]]; then
|
||||||
print "I have found completion definitions in $ifile.
|
print "I have found completion definitions in $ifile.
|
||||||
|
|
@ -92,8 +142,19 @@ ifile=$newifile
|
||||||
|
|
||||||
if [[ $foundold = true ]]; then
|
if [[ $foundold = true ]]; then
|
||||||
sed -n "/^[ ]*$startline/,/^[ ]*$endline/p" $ifile |
|
sed -n "/^[ ]*$startline/,/^[ ]*$endline/p" $ifile |
|
||||||
# Use the default read behaviour to handle any continuation lines.
|
# We can't use the default read behaviour to handle continuation lines
|
||||||
while read line; do
|
# since it messes up internal backslashes.
|
||||||
|
while read -r line; do
|
||||||
|
# detect real continuation backslashes by checking there are an
|
||||||
|
# odd number together. i think this is reliable since the only
|
||||||
|
# other way of quoting a backslash involves following it with
|
||||||
|
# a closing quote.
|
||||||
|
while [[ $line = *\\ ]]; do
|
||||||
|
line2=${(M)line%%\\##}
|
||||||
|
(( ${#line2} & 1 )) || break
|
||||||
|
read -r line2 || break
|
||||||
|
line="${line[1,-2]}$line2"
|
||||||
|
done
|
||||||
(( lines_found++ ))
|
(( lines_found++ ))
|
||||||
if [[ $line = *'$fpath'* ]]; then
|
if [[ $line = *'$fpath'* ]]; then
|
||||||
fpath_line=$line
|
fpath_line=$line
|
||||||
|
|
@ -119,7 +180,7 @@ ${match[3]}"
|
||||||
then
|
then
|
||||||
compinit_args=$match[1]
|
compinit_args=$match[1]
|
||||||
elif [[ $line != [[:blank:]]# &&
|
elif [[ $line != [[:blank:]]# &&
|
||||||
$line != [[:blank:]]#'autoload -Uz compinit' &&
|
$line != [[:blank:]]#'autoload '*' compinit' &&
|
||||||
$line != [[:blank:]]#compinit &&
|
$line != [[:blank:]]#compinit &&
|
||||||
$line != [[:blank:]]#zstyle[[:blank:]]#:compinstall* ]]; then
|
$line != [[:blank:]]#zstyle[[:blank:]]#:compinstall* ]]; then
|
||||||
warn_unknown="${warn_unknown:+$warn_unknown
|
warn_unknown="${warn_unknown:+$warn_unknown
|
||||||
|
|
@ -379,7 +440,7 @@ o. Set options for _oldlist: when to keep old list.
|
||||||
m. Set options for _match: whether to assume a \`*' at the cursor.
|
m. Set options for _match: whether to assume a \`*' at the cursor.
|
||||||
p. Set options for _prefix: whether to add a space before the suffix.
|
p. Set options for _prefix: whether to add a space before the suffix.
|
||||||
|
|
||||||
q. Return to the without saving.
|
q. Return to the previous menu without saving.
|
||||||
0. Done setting completer options.
|
0. Done setting completer options.
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
@ -1848,15 +1909,13 @@ q. Return without saving.
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
local output
|
|
||||||
|
|
||||||
if (( $#styles )); then
|
if (( $#styles )); then
|
||||||
typeset style stylevals context values
|
typeset style stylevals context values
|
||||||
for style in ${(ko)styles}; do
|
for style in ${(ko)styles}; do
|
||||||
stylevals=(${(f)styles[$style]})
|
stylevals=(${(f)styles[$style]})
|
||||||
while (( $#stylevals )); do
|
while (( $#stylevals )); do
|
||||||
output="$output
|
output="$output
|
||||||
zstyle ${(qq)stylevals[1]} $style $stylevals[2]"
|
zstyle ${(qq)stylevals[1]} $style ${stylevals[2]}"
|
||||||
shift 2 stylevals
|
shift 2 stylevals
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
@ -1875,22 +1934,7 @@ local tmpout=${TMPPREFIX:-/tmp/zsh}compinstall$$
|
||||||
# Assemble the complete set of lines to
|
# Assemble the complete set of lines to
|
||||||
# insert.
|
# insert.
|
||||||
#
|
#
|
||||||
{ print -r "$startline
|
__ci_output >$tmpout
|
||||||
$output"
|
|
||||||
if [[ -n $ifile ]]; then
|
|
||||||
line="zstyle :compinstall filename ${(qq)ifile}"
|
|
||||||
print -r "$line"
|
|
||||||
eval "$line"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[[ -n $fpath_line ]] && print -r "$fpath_line"
|
|
||||||
|
|
||||||
print -r "
|
|
||||||
autoload -Uz compinit
|
|
||||||
compinit${compinit_args:+ $compinit_args}"
|
|
||||||
|
|
||||||
print -r "$endline"
|
|
||||||
} >$tmpout
|
|
||||||
|
|
||||||
if [[ -n $ifile ]]; then
|
if [[ -n $ifile ]]; then
|
||||||
if [[ $ifile != *(zshrc|zlogin|zshenv) ]]; then
|
if [[ $ifile != *(zshrc|zlogin|zshenv) ]]; then
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
25
INSTALL
25
INSTALL
|
|
@ -231,6 +231,31 @@ Note that this is mutually exclusive with using the source directories
|
||||||
as make can become confused by build files created in the source directories.
|
as make can become confused by build files created in the source directories.
|
||||||
|
|
||||||
|
|
||||||
|
================================
|
||||||
|
AUTOMATIC NEW USER CONFIGURATION
|
||||||
|
================================
|
||||||
|
|
||||||
|
In the default configuration, the shell comes with a system based around
|
||||||
|
the zsh/newuser add-on module that detects when a user first starts the
|
||||||
|
shell interactively and has no initialisation files (.zshenv, .zshrc,
|
||||||
|
.zprofile or .zlogin). The shell then executes code in the file
|
||||||
|
scripts/newuser in the shared library area (by default
|
||||||
|
/usr/local/share/zsh/<VERSION>/scripts/newuser). This feature can be
|
||||||
|
turned off simply by removing this script. The module can be removed
|
||||||
|
entirely from the configured shell by editing the line starting
|
||||||
|
"name=zsh/newuser" int the config.modules file, which is generated in the
|
||||||
|
top level distribution directory during configuration: change the line to
|
||||||
|
include "link=no auto=no".
|
||||||
|
|
||||||
|
The supplied script executes the function supplied as
|
||||||
|
Functions/Newuser/zsh-newuser-install. This function is currently under
|
||||||
|
development. It is probably preferable for administrators who wish to
|
||||||
|
customize the system their own way to edit the newuser script in
|
||||||
|
scripts/newuser. Also, as there is currently no internationalization
|
||||||
|
support, administrators of sites with users who mostly do not speak English
|
||||||
|
may wish not to install the zsh/newuser module.
|
||||||
|
|
||||||
|
|
||||||
=====================
|
=====================
|
||||||
CONFIGURATION OPTIONS
|
CONFIGURATION OPTIONS
|
||||||
=====================
|
=====================
|
||||||
|
|
|
||||||
4
NEWS
4
NEWS
|
|
@ -8,6 +8,10 @@ Major changes between versions 4.2 and 4.3
|
||||||
- There is support for multibyte character sets in the line editor,
|
- There is support for multibyte character sets in the line editor,
|
||||||
though not the main shell. See Multibyte Character Support in INSTALL.
|
though not the main shell. See Multibyte Character Support in INSTALL.
|
||||||
|
|
||||||
|
- The shell can now run an installation function for a new user
|
||||||
|
(one with no .zshrc, .zshenv, .zprofile or .zlogin file) without
|
||||||
|
any additional setting up by the administrator.
|
||||||
|
|
||||||
- New option PROMPT_SP, on by default, to work around the problem that the
|
- New option PROMPT_SP, on by default, to work around the problem that the
|
||||||
line editor can overwrite output with no newline at the end.
|
line editor can overwrite output with no newline at the end.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue