From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11536 invoked from network); 26 Jun 2000 16:02:43 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 26 Jun 2000 16:02:43 -0000 Received: (qmail 23134 invoked by alias); 26 Jun 2000 16:02:15 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 12076 Received: (qmail 23115 invoked from network); 26 Jun 2000 16:02:15 -0000 Date: Mon, 26 Jun 2000 17:01:48 +0100 From: Peter Stephenson Subject: Re: (forw) --help able programs and completion In-reply-to: "Your message of Mon, 26 Jun 2000 08:30:00 PDT." <20000626083000.A22758@corp.phone.com> To: zsh-workers@sunsite.auc.dk (Zsh hackers list), Matt Armstrong Message-id: <0FWR004K0R6ZW8@la-la.cambridgesiliconradio.com> Content-transfer-encoding: 7BIT > My .zshrc is a symbolic link to ~/dotfiles/zshrc. compinstall got > confused by this and replaced the entire contents with its own stuff. > > Perhaps it could check for a symlink and reference ~/dotfiles/zshrc > directly? I think there were two things: it would follow the symlink OK, but it would save the file as a real file in place of the symlink, which I've fixed. Also, it didn't append like it was supposed to. > Anyway, I was confused by this interaction -- especially the line: > > This will be written to the new file . There were some poor tests on the variable. > (it'd be nice if compinstall would offer to append definitions to the > given file). Ouch, it should automatically append the lines rather than replace the file. Index: Completion/Core/compinstall =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Core/compinstall,v retrieving revision 1.14 diff -u -r1.14 compinstall --- Completion/Core/compinstall 2000/05/22 17:52:52 1.14 +++ Completion/Core/compinstall 2000/06/26 15:58:30 @@ -35,7 +35,7 @@ # # This relies on the stuff we find being only minimally edited from # the stuff we originally saved. A better way of doing this would -# almost certianly be to use the style mechanism directly: save the +# almost certainly be to use the style mechanism directly: save the # current styles in a variable, delete all styles, read in and evaluate # any styles found, manipulate styles directly using zstyle, write out # using zstyle -L, and if necessary restore the original styles. One @@ -147,17 +147,19 @@ print "All the comments in your configuration section will be lost. If you want to keep them, you should copy them somewhere else first." elif (( ! $lines_found )); then - print -n "Starting a new completion configuration from scratch. -This will be " - if [[ ! -f $ifile ]]; then - print "written to the new file $ifile." - elif [[ ! -w $ifile ]]; then - print "written to the file ~/.compinstall for copying to $ifile." - ifile=$HOME/.compinstall - else - print "appended to the file $ifile. It is up to you to ensure + print "Starting a new completion configuration from scratch." + if [[ -n $ifile && ! -d $ifile ]]; then + print -n "This will be " + if [[ ! -f $ifile ]]; then + print "written to the new file $ifile." + elif [[ ! -w $ifile ]]; then + print "written to the file ~/.compinstall for copying to $ifile." + ifile=$HOME/.compinstall + else + print "appended to the file $ifile. It is up to you to ensure that these lines are actually executed. They will not be if your .zshrc usually returns before the end." + fi fi fi print "Note that you will be given a chance to save the new setup @@ -1711,8 +1713,9 @@ done fi -if ! read -q key"?Save new settings to $ifile? "; then - print "Enter a different filename (~ will be expanded), or return to abort:" +if [[ -z $ifile || -d $ifile ]] || + ! read -q key"?Save new settings to $ifile? "; then + print "Enter file to save in (~ will be expanded), or return to abort:" ifile= vared -ch -p 'file> ' ifile ifile=${~ifile} @@ -1759,8 +1762,8 @@ if { { grep "$endline" $ifile >/dev/null 2>&1 && sed -e "/^[ ]*$endline/r $tmpout /^[ ]*$startline/,/^[ ]*$endline/d" $ifile >${tmpout}2 } || - cat $tmpout >>${tmpout}2 } && - mv ${tmpout}2 $ifile; then + { cp $ifile ${tmpout}2 && cat $tmpout >>${tmpout}2 } } && + cp ${tmpout}2 $ifile && rm -f ${tmpout}2; then print "\nSuccessfully added compinstall lines to $ifile." rm -f $tmpout else -- Peter Stephenson Cambridge Silicon Radio, Unit 300, Science Park, Milton Road, Cambridge, CB4 0XL, UK Tel: +44 (0)1223 392070