diff --git a/fix-printf.patch b/fix-printf.patch new file mode 100644 index 0000000..edf9a9f --- /dev/null +++ b/fix-printf.patch @@ -0,0 +1,13 @@ +Index: zsh-5.3/Src/builtin.c +=================================================================== +--- zsh-5.3.orig/Src/builtin.c ++++ zsh-5.3/Src/builtin.c +@@ -100,7 +100,7 @@ static struct builtin builtins[] = + + BUILTIN("popd", BINF_SKIPINVALID | BINF_SKIPDASH | BINF_DASHDASHVALID, bin_cd, 0, 1, BIN_POPD, "q", NULL), + BUILTIN("print", BINF_PRINTOPTS, bin_print, 0, -1, BIN_PRINT, "abcC:Df:ilmnNoOpPrRsSu:v:x:X:z-", NULL), +- BUILTIN("printf", 0, bin_print, 1, -1, BIN_PRINTF, "v:", NULL), ++ BUILTIN("printf", BINF_SKIPINVALID | BINF_SKIPDASH, bin_print, 1, -1, BIN_PRINTF, "v:", NULL), + BUILTIN("pushd", BINF_SKIPINVALID | BINF_SKIPDASH | BINF_DASHDASHVALID, bin_cd, 0, 2, BIN_PUSHD, "qsPL", NULL), + BUILTIN("pushln", 0, bin_print, 0, -1, BIN_PRINT, NULL, "-nz"), + BUILTIN("pwd", 0, bin_pwd, 0, 0, 0, "rLP", NULL), diff --git a/zprofile b/zprofile index aade981..3cd54cf 100644 --- a/zprofile +++ b/zprofile @@ -1,3 +1,7 @@ # we source the general profile here so we dont have to # reimplement it +setopt nonomatch source /etc/profile +unsetopt nonomatch +# put your own login shell specific configuration below +# this line diff --git a/zsh-5.2.tar.xz b/zsh-5.2.tar.xz deleted file mode 100644 index d7b091c..0000000 --- a/zsh-5.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f17916320ffaa844bbd7ce48ceeb5945fc5f3eff64b149b4229bbfbdf3795a9d -size 2820108 diff --git a/zsh-5.2.tar.xz.asc b/zsh-5.2.tar.xz.asc deleted file mode 100644 index 694623f..0000000 --- a/zsh-5.2.tar.xz.asc +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1 - -iQEcBAABCAAGBQJWXz9JAAoJEKcdmp1L2yezZf0H/2kang8QyaG6v+n0VtKo5Wcf -U0BHiQ/EZDVR0LPt5+U22azFkPlLAXaRv7xbj+qvlwogrJUYpmupzKZJqetQITvP -YE/CAQQ3BQgIQG0iIzrPNdJC3ahQMKyqMbuxPTI7leoIKsbYFnWPDHPNe1irYSBZ -yCMUwgi5G+0i0uBxCvP/8b3SNAR44xAnofZ6RieInpPgY0q9fjVzO4aJfcVQroTX -E+t66ncXcMbDKa+kRxeLs4trCz/+I/OEJdCJTHQVegc/EWoY150NYYHmk2mxsQGY -r7yXCKcgX9+QfGyO3bLyVg3bQikprJaQahD1sRRnOCfpECtXOpT8oGk6gwOqgI0= -=UaqL ------END PGP SIGNATURE----- diff --git a/zsh-5.3.tar.xz b/zsh-5.3.tar.xz new file mode 100644 index 0000000..b274035 --- /dev/null +++ b/zsh-5.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76f82cfd5ce373cf799a03b6f395283f128430db49202e3e3f512fb5a19d6f8a +size 2928684 diff --git a/zsh-5.3.tar.xz.asc b/zsh-5.3.tar.xz.asc new file mode 100644 index 0000000..7c22717 --- /dev/null +++ b/zsh-5.3.tar.xz.asc @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQEcBAABCAAGBQJYTYfAAAoJEKcdmp1L2yezCKUH/RPI0C/WcqYcBU8NBZtESudL +WkHhoxndQGh3DwhNn6ueCEo3h7VFm+ET28fs7HDHcfcUynm6jiii/ZE4mGr628EI +oAEIQQs19ymmU1jCTFdZwMv7m+QJF/hjC0iIQUodXt3UuQ8x+hXdpGWP7Y9FyFt8 +rMg4Yqh6Y+81IaFfVIItgpZtp1c8HcjUBC176sQV+Q5dmXSXCUg8zTV/jCqvnhes +mfMXDVlRUOWlz7YbVjg8G94e8RuK/EaBwVGmnmh7hXt0AoYlU5gLYxBg3QB+kd/J +sVAVs+W77AURRFXlxbsxAuWSGpwNtPl+nPGxJXh2whr8h8uhW12H6OdutGEF8Qw= +=DUlK +-----END PGP SIGNATURE----- diff --git a/zsh.changes b/zsh.changes index d05e7c7..30728b9 100644 --- a/zsh.changes +++ b/zsh.changes @@ -1,3 +1,31 @@ +------------------------------------------------------------------- +Wed Dec 14 09:37:40 UTC 2016 - idonmez@suse.com + +- Update to zsh 5.3 + * Unicode9 support, this needs support from your terminal to + work correctly. + * The new word modifier ':P' computes the physical path of the + argument. + * The output of "typeset -p" uses "export" commands or the "-g" + option for parameters that are not local to the current scope. + * vi-repeat-change can repeat user-defined widgets if the widget + calls zle -f vichange. + * The parameter $registers now makes the contents of vi register + buffers available to user-defined widgets. + * New vi-up-case and vi-down-case builtin widgets bound to gU/gu + (or U/u in visual mode) for doing case conversion. + * A new select-word-match function provides vim-style text objects + with configurable word boundaries using the existing + match-words-by-style mechanism. + * Support for the conditional expression [[ -v var ]] to test if a + variable is set for compatibility with other shells. + * The print and printf builtins have a new option -v to assign the + output to a variable. + * New x: syntax in completion match specifications make it possible + to disable match specifications hardcoded in completion functions. +- Re-add custom zshrc and zshenv to unbreak compatibility with old + usage (boo#998858). + ------------------------------------------------------------------- Thu Sep 8 13:25:28 UTC 2016 - idonmez@suse.com diff --git a/zsh.spec b/zsh.spec index 3b36ec9..8cd732f 100644 --- a/zsh.spec +++ b/zsh.spec @@ -17,7 +17,7 @@ Name: zsh -Version: 5.2 +Version: 5.3 Release: 0%{?dist} Summary: Shell with comprehensive completion License: MIT @@ -26,7 +26,9 @@ Url: http://www.zsh.org Source0: http://www.zsh.org/pub/zsh-%{version}.tar.xz Source1: http://www.zsh.org/pub/zsh-%{version}.tar.xz.asc Source2: %{name}.keyring -Source3: zprofile +Source3: zshrc +Source4: zshenv +Source5: zprofile %if 0%{?rhel_version} || 0%{?centos_version} || 0%{?fedora_version} Source11: zlogin.rhs Source12: zlogout.rhs @@ -38,6 +40,7 @@ Source16: dotzshrc.rh Patch1: trim-unneeded-completions.patch # PATCH-FIX-OPENSUSE zsh-osc-completion.patch -- Fix openSUSE versions in osc completion Patch2: zsh-osc-completion.patch +Patch3: fix-printf.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: groff %if 0%{?suse_version} @@ -99,6 +102,7 @@ This package contains the Zsh manual in html format. %patch1 -p1 %endif %patch2 -p1 +%patch3 -p1 # Remove executable bit chmod 0644 Etc/changelog2html.pl @@ -124,7 +128,8 @@ perl -p -i -e 's|/usr/local/bin|%{_bindir}|' \ --with-tcsetpgrp \ --enable-cap \ --enable-multibyte \ - --enable-pcre + --enable-pcre \ + --enable-unicode9 # Copy _rpm completion from Redhat (bnc#900424) %if 0%{?suse_version} @@ -158,7 +163,7 @@ install -m 0755 -Dd %{buildroot}/{etc,bin} %if 0%{?suse_version} # install SUSE configuration -install -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir} +install -m 0644 %{SOURCE3} %{SOURCE4} %{SOURCE5} %{buildroot}%{_sysconfdir} # Create custom completion directory mkdir %{buildroot}%{_sysconfdir}/zsh_completion.d @@ -251,7 +256,8 @@ fi %defattr(-,root,root) %doc ChangeLog FEATURES LICENCE MACHINES META-FAQ NEWS README %doc Etc/* intro.ps Misc/compctl-examples - +%config(noreplace) %{_sysconfdir}/zshrc +%config(noreplace) %{_sysconfdir}/zshenv %config(noreplace) %{_sysconfdir}/zprofile %if 0%{?rhel_version} || 0%{?centos_version} || 0%{?fedora_version} %config(noreplace) %{_sysconfdir}/zlogin diff --git a/zshenv b/zshenv new file mode 100644 index 0000000..5a53069 --- /dev/null +++ b/zshenv @@ -0,0 +1 @@ +# set global options for all zsh shells here diff --git a/zshrc b/zshrc new file mode 100644 index 0000000..e2f375f --- /dev/null +++ b/zshrc @@ -0,0 +1,252 @@ +# read bash.bashrc first for some features we dont want +# to re-implement here +source /etc/bash.bashrc + +# Custom completion support via /etc/zsh_completion.d +fpath=( $fpath /etc/zsh_completion.d ) + +# zsh line editing +: ${ZSHEDIT:="emacs"} +: ${TERM:=linux} + +if [[ "$ZSHEDIT" == "vi" ]] then + bindkey -v +else + bindkey -e + bindkey "^[ " magic-space + bindkey "^[!" expand-history +fi + +# Environment +HISTSIZE=1000 +HISTFILE=${HOME}/.zsh_history +SAVEHIST=500 + +# Prompt on the right side. zsh feature +#RPROMPT="[%T]" + +# Set/unset shell options +setopt nocorrect +setopt pushdtohome +setopt autolist +setopt nopromptcr +setopt nocorrectall +setopt autocd +setopt recexact +setopt longlistjobs +setopt histignoredups +setopt pushdsilent +setopt appendhistory +setopt histexpiredupsfirst +setopt autopushd +setopt pushdminus +setopt extendedglob +setopt rcquotes +unsetopt bgnice +unsetopt autoparamslash +unsetopt hup + +# Setup some basic programmable completions. To see more examples +# of these, check out /usr/doc/packages/zsh/compctl-examples. +# You you have a slow machine, you might want to comment the lines below +# with compctl in, and comment the below two lines out. +# +# compctl -g '*(-/)' cd pushd +# compctl -g '*(/)' rmdir dircmp +# compctl -j -P % -x 's[-] p[1]' -k signals -- kill +# compctl -j -P % fg bg wait jobs disown +# compctl -A shift +# compctl -caF type whence which +# compctl -F unfunction +# compctl -a unalias +# compctl -v unset typeset declare vared readonly export integer +# compctl -e disable +# compctl -d enable +# +# The default way is the usage of the zsh built-in completer +# Comment the two below lines out, if you are on a slow machine, and +# comment the above compctl lines in. + +autoload -U compinit +compinit + +# Completion so "cd .." -> "cd ../" +# zstyle ':completion:*' special-dirs .. + +# Online help +unalias run-help 2>/dev/null || true +autoload run-help + +# Don't use zsh builtin which +alias which >/dev/null && unalias which + +# Common standard keypad and cursor +bindkey "^[[2~" yank +bindkey "^[[3~" delete-char + +# History completion on pgup and pgdown +autoload -U history-search-end +zle -N history-beginning-search-backward-end history-search-end +zle -N history-beginning-search-forward-end history-search-end +bindkey "^[[5~" history-beginning-search-backward-end +bindkey "^[[6~" history-beginning-search-forward-end + +if [[ "$TERM" == "xterm" || "$TERM" == "xterm-256color" ]] then + bindkey "^[2;5~" yank + bindkey "^[3;5~" delete-char + bindkey "^[5;5~" up-history + bindkey "^[6;5~" down-history +fi +bindkey "^[[C" forward-char +bindkey "^[[D" backward-char +bindkey "^[[A" up-history +bindkey "^[[B" down-history + +# Avoid network problems +# ... \177 (ASCII-DEL) and \010 (ASCII-BS) +# do `backward-delete-char' +# Note: `delete-char' is maped to \033[3~ +# Therefore xterm's responce on pressing +# key Delete or KP-Delete should be +# \033[3~ ... NOT \177 +bindkey "^?" backward-delete-char +bindkey "^H" backward-delete-char + +# Home and End +if [[ "$TERM" == "xterm" || "$TERM" == "xterm-256color" ]] then + # Normal keypad and cursor of xterm + bindkey "^[[1~" history-search-backward + bindkey "^[[4~" set-mark-command + bindkey "^[[H" beginning-of-line + bindkey "^[[F" end-of-line + # Home and End of application keypad and cursor of xterm + bindkey "^[OH" beginning-of-line + bindkey "^[OF" end-of-line + bindkey "^[O5H" beginning-of-line + bindkey "^[O5F" end-of-line +else +if [[ "$TERM" == "kvt" ]] then + bindkey "^[[1~" history-search-backward + bindkey "^[[4~" set-mark-command + bindkey "^[OH" beginning-of-line + bindkey "^[OF" end-of-line +else + # TERM=linux or console + bindkey "^[[1~" beginning-of-line + bindkey "^[[4~" end-of-line +fi +fi + +# Application keypad and cursor of xterm +if [[ "$TERM" == "xterm" || "$TERM" == "xterm-256color" ]] then + bindkey "^[OD" backward-char + bindkey "^[OC" forward-char + bindkey "^[OA" up-history + bindkey "^[OB" down-history + # DEC keyboard KP_F1 - KP_F4 + bindkey -s "^[OP" "^[" + bindkey "^[OQ" undo + bindkey "^[OR" undefined-key + bindkey "^[OS" kill-line +fi +if [[ "$TERM" == "gnome" ]] then + # or gnome terminal F1 - F4 + bindkey -s "^[OP" "^[" + bindkey "^[OQ" undo + bindkey "^[OR" undefined-key + bindkey "^[OS" kill-line +fi +# Function keys F1 - F12 +if [[ "$TERM" == "linux" ]] then + # On console the first five function keys + bindkey "^[[[A" undefined-key + bindkey "^[[[B" undefined-key + bindkey "^[[[C" undefined-key + bindkey "^[[[D" undefined-key + bindkey "^[[[E" undefined-key +else + # The first five standard function keys + bindkey "^[[11~" undefined-key + bindkey "^[[12~" undefined-key + bindkey "^[[13~" undefined-key + bindkey "^[[14~" undefined-key + bindkey "^[[15~" undefined-key +fi +bindkey "^[[17~" undefined-key +bindkey "^[[18~" undefined-key +bindkey "^[[19~" undefined-key +bindkey "^[[20~" undefined-key +bindkey "^[[21~" undefined-key +# Note: F11, F12 are identical with Shift_F1 and Shift_F2 +bindkey "^[[23~" undefined-key +bindkey "^[[24~" undefined-key + +# Shift Function keys F1 - F12 +# identical with F11 - F22 +# +# bindkey "^[[23~" undefined-key +# bindkey "^[[24~" undefined-key +bindkey "^[[25~" undefined-key +bindkey "^[[26~" undefined-key +# DEC keyboard: F15=^[[28~ is Help +bindkey "^[[28~" undefined-key +# DEC keyboard: F16=^[[29~ is Menu +bindkey "^[[29~" undefined-key +bindkey "^[[31~" undefined-key +bindkey "^[[32~" undefined-key +bindkey "^[[33~" undefined-key +bindkey "^[[34~" undefined-key +if [[ "$TERM" == "xterm" || "$TERM" == "xterm-256color" ]] then + # Not common + bindkey "^[[35~" undefined-key + bindkey "^[[36~" undefined-key +fi + +if [[ "$TERM" == "xterm" || "$TERM" == "xterm-256color" ]] then + # Application keypad and cursor of xterm + # with NumLock ON + # + # Operators + bindkey -s "^[Oo" "/" + bindkey -s "^[Oj" "*" + bindkey -s "^[Om" "-" + bindkey -s "^[Ok" "+" + bindkey -s "^[Ol" "," + bindkey -s "^[OM" "\n" + bindkey -s "^[On" "." + # Numbers + bindkey -s "^[Op" "0" + bindkey -s "^[Oq" "1" + bindkey -s "^[Or" "2" + bindkey -s "^[Os" "3" + bindkey -s "^[Ot" "4" + bindkey -s "^[Ou" "5" + bindkey -s "^[Ov" "6" + bindkey -s "^[Ow" "7" + bindkey -s "^[Ox" "8" + bindkey -s "^[Oy" "9" +fi + +# EMACS line editing +if [[ "$ZSHEDIT" == "emacs" ]] then + # ... xterm application cursor + if [[ "$TERM" == "xterm" || "$TERM" == "xterm-256color" ]] then + bindkey "^[^[OD" backward-word + bindkey "^[^[OC" forward-word + bindkey "^[^[OA" up-history + bindkey "^[^[OB" down-history + bindkey "^^[OD" backward-char + bindkey "^^[OC" forward-char + bindkey "^^[OA" up-history + bindkey "^^[OB" down-history + fi + # Standard cursor + bindkey "^[^[[D" backward-word + bindkey "^[^[[C" forward-word + bindkey "^[^[[A" up-history + bindkey "^[^[[B" down-history + bindkey "^^[[D" backward-char + bindkey "^^[[C" forward-char + bindkey "^^[[A" up-history + bindkey "^^[[B" down-history +fi