zsh-users
 help / color / mirror / code / Atom feed
* Would like an alias to read the part of the current command line that precedes the alias
@ 2011-10-10 23:15 dg1727
  2011-10-11  2:05 ` Bart Schaefer
  0 siblings, 1 reply; 6+ messages in thread
From: dg1727 @ 2011-10-10 23:15 UTC (permalink / raw)
  To: zsh-users

Hello, 

I am using zsh 4.3.12 on Xubuntu and am trying to find a substitute 
for the following which is in the default .bashrc:  

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
#alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo 
terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-
9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

This pops up a notification that says, for example, "sleep 10" to 
let the user know which long-running command has just finished.  
The part of the alias that seems hard to duplicate in zsh is:  

history|tail -n1

The closest I have come to a working zsh version of "alert" is to 
define the following function in .zshrc:  

function alert_function() {
  local icontype="$([ $? = 0 ] && echo terminal || echo error)"

  local last_hist="$argv[*]"
  # This is dependent on this function being called correctly.  
  # Calling the function correctly can be done manually as follows: 
 
  # sleep 2; alert_function !#:0-
  # ... but it is not yet known how to do this in such a way that 
the only 
  # punctuation mark that the user needs to type is the ";".  

  notify-send --urgency=low -i $icontype $last_hist
}

The comment block tells the story.  :-) 

The zshexpn manpage says that history expansion (!#:0- in this 
case) is done before alias expansion (or any other expansion).  
That seems to make it difficult for any keyword that consists only 
of letters (no punctuation marks), such as 'alert', to refer to 
what precedes it on the command line.  

Thanks in advance for suggestions.  


^ permalink raw reply	[flat|nested] 6+ messages in thread
* Re: Would like an alias to read the part of the current command line that precedes the alias
@ 2011-10-10 23:21 dg1727
  0 siblings, 0 replies; 6+ messages in thread
From: dg1727 @ 2011-10-10 23:21 UTC (permalink / raw)
  To: zsh-users



On Mon, 10 Oct 2011 19:15:18 -0400 dg1727@hushmail.com wrote:
>Hello, 
>
>I am using zsh 4.3.12 on Xubuntu and am trying to find a 
>substitute 
>for the following which is in the default .bashrc:  
>
># Add an "alert" alias for long running commands.  Use like so:
>#   sleep 10; alert
>#alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo 
>terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-
>9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
>
>This pops up a notification that says, for example, "sleep 10" to 
>let the user know which long-running command has just finished.  
>The part of the alias that seems hard to duplicate in zsh is:  
>
>history|tail -n1
>
>The closest I have come to a working zsh version of "alert" is to 
>define the following function in .zshrc:  
>
>function alert_function() {
>  local icontype="$([ $? = 0 ] && echo terminal || echo error)"
>
>  local last_hist="$argv[*]"
>  # This is dependent on this function being called correctly.  
>  # Calling the function correctly can be done manually as 
>follows: 
> 
>  # sleep 2; alert_function !#:0-
>  # ... but it is not yet known how to do this in such a way that 
>the only 
>  # punctuation mark that the user needs to type is the ";".  
>
>  notify-send --urgency=low -i $icontype $last_hist
>}
>
>The comment block tells the story.  :-) 
>
>The zshexpn manpage says that history expansion (!#:0- in this 
>case) is done before alias expansion (or any other expansion).  
>That seems to make it difficult for any keyword that consists only 
>
>of letters (no punctuation marks), such as 'alert', to refer to 
>what precedes it on the command line.  
>
>Thanks in advance for suggestions.

My apologies that the lines of code are word-wrapped in my e-mails. 
 The 3 lines of BASH code starting with #alias were not supposed to 
be commented (no # at the beginning), and are all one line in 
.bashrc.  


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-11-07  5:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-10 23:15 Would like an alias to read the part of the current command line that precedes the alias dg1727
2011-10-11  2:05 ` Bart Schaefer
2011-10-13  3:15   ` Aaron Davies
2011-10-13 19:32     ` Bart Schaefer
2011-11-07  5:12       ` Aaron Davies
2011-10-10 23:21 dg1727

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).