quilt-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Quilt-dev] 27111 - bash completion


From: Martin Quinson
Subject: Re: [Quilt-dev] 27111 - bash completion
Date: Sun, 20 Jan 2013 21:46:40 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

Hello Daniel,

well, I dunno. My feeling is that firering a perl process each time we
press on tab is somehow wrong. But I now realize that quilt already
depends on perl on several locations. That looks wrong to me but if
the others don't mind, I guess that your patch can get in as it is.

Thanks for your time,
Mt

On Sun, Jan 20, 2013 at 01:15:47AM +0100, Daniel Lovasko wrote:
> Hi Martin!
> 
> The only reason for choosing perl over sed, was perl's regex ability \Q \E, 
> which stops regex engine from interpreting
> text between them (something like literal mode) - resulting into fact, that 
> variable $QUILT_PATCHES can be freely pasted
> into the regex. So that there is no worry having special meta-characters 
> inside the variable. 
> 
> While I do not see your point (but I still respect it), I can offer this 
> sed-only solution:
> before passing the $QUILT_PATCHES, make a copy of it, and in that copy, 
> substitute all special meta-chars that sed
> recognizes with their literal alternative. For example changing "." into "\.".
> 
> What do you think? Should I implement this?
> Thanks for your feedback and have a nice day,
> 
> Daniel
> 
> >>> Martin Quinson <address@hidden> 01/19/13 11:00 AM >>>
> Hello Daniel, thanks for your work.
> 
> On Thu, Jan 17, 2013 at 02:50:08PM +0100, Daniel Lovasko wrote:
> > Hi all,
> > 
> > in the attached patch is my solution for this bug.
> 
> Could you please comment a bit on how different this solution is wrt
> the patch gentoo278641b.patch provided by the bug reporter? From what
> I can see, you went for perl instead of sed and adapted to the fact
> that errors are redirected to /dev/null.
> 
> I'd say that relying on perl is wrong. If we mandate perl anywhere in
> quilt, we should rather reimplement anything in perl. Could you please
> change it back to sed?
> 
> Thanks again, Mt.
> 
> PS: I was wondering whether it is possible to write some sort of test
> files for this, but I guess it's simply impossible.
> 
> > diff --git a/bash_completion b/bash_completion
> > index 19736cb..1241d15 100644
> > --- a/bash_completion
> > +++ b/bash_completion
> > @@ -86,6 +86,21 @@ _quilt_comfile()
> >          done
> >  }
> >  
> > +# Resolve paths to patches only inside QUILT_PATCHES directory
> > +# 
> > +# Problem with `quilt series` within completion is it's nature of output
> > +#  as it produces relative path to current working directory, instead of 
> > +#  relative path to QUILT_PATCHES directory.
> > +#
> > +# sed explanation: capture as many as possible of "../" and after that
> > +#  QUILT_PATCHES directory name (if not defined, use default "patches")
> > +#  and remove it all from each filename
> > +#
> > +_quilt_patchlist()
> > +{
> > +    quilt $1 | perl -pne 's:^(\.\./)*\Q'"${QUILT_PATCHES:-patches}"'\E/?::'
> > +}
> > +
> >  _quilt_completion()
> >  {
> >      local cur prev cmds command_matches
> > @@ -123,7 +138,7 @@ _quilt_completion()
> >      add)
> >         case $prev in
> >           -P)
> > -             COMPREPLY=( $( compgen -W "$(quilt applied 2>/dev/null)" -- 
> > $cur ) )
> > +             COMPREPLY=( $( compgen -W "$(_quilt_patchlist applied 
> > 2>/dev/null)" -- $cur ) )
> >          ;;
> >           *)
> >              _quilt_comfile
> > @@ -134,7 +149,7 @@ _quilt_completion()
> >      annotate)
> >         case $prev in
> >           -P)
> > -             COMPREPLY=( $( compgen -W "$(quilt applied 2>/dev/null)" -- 
> > $cur ) )
> > +             COMPREPLY=( $( compgen -W "$(_quilt_patchlist applied 
> > 2>/dev/null)" -- $cur ) )
> >          ;;
> >           *)
> >              _quilt_comfile
> > @@ -143,10 +158,10 @@ _quilt_completion()
> >         esac
> >         ;;
> >      applied) 
> > -       COMPREPLY=( $( compgen -W "-h $(quilt applied 2>/dev/null)" -- $cur 
> > ) )
> > +       COMPREPLY=( $( compgen -W "-h $(_quilt_patchlist applied 
> > 2>/dev/null)" -- $cur ) )
> >         ;;
> >      delete) 
> > -       COMPREPLY=( $( compgen -W "-n -r -h --backup $(quilt series)" -- 
> > $cur ) )
> > +       COMPREPLY=( $( compgen -W "-n -r -h --backup $(_quilt_patchlist 
> > series)" -- $cur ) )
> >         ;;
> >      diff) 
> >         case $prev in
> > @@ -154,7 +169,7 @@ _quilt_completion()
> >               COMPREPLY=( $( compgen -W "0 1" -- $cur ) )
> >          ;;
> >           -P|--combine)
> > -             COMPREPLY=( $( compgen -W "$(quilt applied 2>/dev/null)" -- 
> > $cur ) )
> > +             COMPREPLY=( $( compgen -W "$(_quilt_patchlist applied 
> > 2>/dev/null)" -- $cur ) )
> >          ;;
> >           --diff|-U|-C)
> >          ;;
> > @@ -1
> 71,10 +186,10 @@ _quilt_completio> -        COMPREPLY=( $( compgen -W 
> "$(quilt applied 2>/dev/null)" -- $cur ) )
> > +        COMPREPLY=( $( compgen -W "$(_quilt_patchlist applied 
> > 2>/dev/null)" -- $cur ) )
> >          ;;
> >           *)
> > -        COMPREPLY=( $( compgen -W "-a -l -v -h --combine $(quilt applied 
> > 2>/dev/null)" -- $cur ) )
> > +        COMPREPLY=( $( compgen -W "-a -l -v -h --combine 
> > $(_quilt_patchlist applied 2>/dev/null)" -- $cur ) )
> >          ;;
> >         esac
> >         ;;
> > @@ -198,7 +213,7 @@ _quilt_completion()
> >              COMPREPLY=( $( compgen -W "files" -- $cur ) )
> >          ;;
> >           *)
> > -        COMPREPLY=( $( compgen -W "-T -h --all --reduce --lines 
> > --edge-labels $(quilt applied 2>/dev/null)" -- $cur )
> )
> > +        COMPREPLY=( $( compgen -W "-T -h --all --reduce --lines 
> > --edge-labels $(_quilt_patchlist applied
> 2>/dev/null)" -- $cur ) )
> >          ;;
> >         esac
> >         ;;
> > @@ -207,7 +222,7 @@ _quilt_completion()
> >         COMPREPLY=( address@hidden:-} $( compgen -W "-h" -- $cur ) )
> >         ;;
> >      header)
> > -       COMPREPLY=( $( compgen -W "-a -e -h -r --backup --strip-diffstat 
> > --strip-trailing-whitespace $(quilt series)"
> -- $cur ) )
> > +       COMPREPLY=( $( compgen -W "-a -e -h -r --backup --strip-diffstat 
> > --strip-trailing-whitespace
> $(_quilt_patchlist series)" -- $cur ) )
> >         ;;
> >      import)
> >         case $prev in
> > @@ -229,17 +244,17 @@ _quilt_completion()
> >         COMPREPLY=( $( compgen -W "-m --prefix --mbox --send --sender 
> > --from --subject --to --cc --bcc" -- $cur ) )
> >         ;;
> >      next|previous)
> > -       COMPREPLY=( $( compgen -W "$(quilt series)" -- $cur ) )
> > +       COMPREPLY=( $( compgen -W "$(_quilt_patchlist series)" -- $cur ) )
> >         ;;
> >      patches)
> >         _quilt_comfile 
> >         COMPREPLY=( address@hidden:-} $( compgen -W "-v -h" -- $cur ) )
> >         ;;
> >      pop)
> > -       COMPREPLY=( $( compgen -W "-a -f -R -q -v -h $(quilt applied 
> > 2>/dev/null)" -- $cur ) )
> > +       COMPREPLY=( $( compgen -W "-a -f -R -q -v -h $(_quilt_patchlist 
> > applied 2>/dev/null)" -- $cur ) )
> >         ;;
> >      push)
> > -       COMPREPLY=( $( compgen -W "-a -f -q -v -h --leave-rejects 
> > --interactive --color $(quilt unapplied
> 2>/dev/null)" -- $cur ) )
> > +       COMPREPLY=( $( compgen -W "-a -f -q -v -h --leave-rejects 
> > --interactive --color $(_quilt_patchlist unapplied
> 2>/dev/null)" -- $cur ) )
> >         ;;
> >      refresh)
> >         case $prev in
> > @@ -249,14 +264,14 @@ _quilt_completion()
> >           -U|-C)
> >          ;;
> >           *)
> > -             COMPREPLY=( $( compgen -W "-p -u -U -c -C -f -h $(quilt 
> > applied 2>/dev/null) --no-timestamps --no-index
> --diffstat --sort --backup --strip-trailing-whitespace" -- $cur ) )
> > +             COMPREPLY=( $( compgen -W "-p -u -U -c -C -f -h 
> > $(_quilt_patchlist applied 2>/dev/null) --no-timestamps
> --no-index --diffstat --sort --backup --strip-trailing-whitespace" -- $cur ) )
> >          ;;
> >         esac
> >         ;;
> >      remove|revert)
> >         case $prev in
> >           -P)
> > -             COMPREPLY=( $( compgen -W "$(quilt applied 2>/dev/null)" -- 
> > $cur ) )
> > +             COMPREPLY=( $( compgen -W "$(_quilt_patchlist applied 
> > 2>/dev/null)" -- $cur ) )
> >          ;;
> >           *)
> >              _quilt_comfile 
> > @@ -267,7 +282,7 @@ _quilt_completion()
> >      rename)
> >         case $prev in
> >           -P)
> > -        COMPREPLY=( $( compgen -W "$(quilt series)" -- $cur ) )
> > +        COMPREPLY=( $( compgen -W "$(_quilt_patchlist series)" -- $cur ) )
> >          ;;
> >           *)
> >          COMPREPLY=( $( compgen -W "-P -h" -- $cur ) )
> > @@ -292,7 +307,7 @@ _quilt_completion()
> >         COMPREPLY=( $( compgen -W "-d -h" -- $cur ) )
> >         ;;
> >      unapplied)
> > -       COMPREPLY=( $( compgen -W "-h $(quilt series)" -- $cur ) )
> > +       COMPREPLY=( $( compgen -W "-h $(_quilt_patchlist series)" -- $cur ) 
> > )
> >         ;;
> >      fork|new|top|upgrade)
> >         ;;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]