diff options
| -rw-r--r-- | lib/clipboard.zsh | 67 | ||||
| -rw-r--r-- | plugins/coffee/coffee.plugin.zsh | 10 | ||||
| -rw-r--r-- | plugins/copydir/copydir.plugin.zsh | 4 | ||||
| -rw-r--r-- | plugins/copyfile/copyfile.plugin.zsh | 8 | 
4 files changed, 80 insertions, 9 deletions
diff --git a/lib/clipboard.zsh b/lib/clipboard.zsh new file mode 100644 index 000000000..24b7380f7 --- /dev/null +++ b/lib/clipboard.zsh @@ -0,0 +1,67 @@ +# System clipboard integration +# +# This file has support for doing system clipboard copy and paste operations +# from the command line in a generic cross-platform fashion. +# +# On OS X and Windows, the main system clipboard or "pasteboard" is used. On other +# Unix-like OSes, this considers the X Windows CLIPBOARD selection to be the +# "system clipboard", and the X Windows `xclip` command must be installed. + +# clipcopy - Copy data to clipboard +# +# Usage: +# +#  <command> | clipcopy    - copies stdin to clipboard +# +#  clipcopy <file>         - copies a file's contents to clipboard +# +function clipcopy() { +  emulate -L zsh +  local file=$1 +  if [[ $OSTYPE == darwin* ]]; then +    if [[ -z $file ]]; then +      pbcopy +    else +      cat $file | pbcopy +    fi +  elif [[ $OSTYPE == cygwin* ]]; then +    if [[ -z $file ]]; then +      cat > /dev/clipboard +    else +      cat $file > /dev/clipboard +    fi +  else +    which xclip &>/dev/null +    if [[ $? != 0 ]]; then +      print "clipcopy: Platform $OSTYPE not supported or xclip not installed" >&2 +      return 1 +    fi +    if [[ -z $file ]]; then +      xclip -in -selection clipboard +    else +      xclip -in -selection clipboard $file +    fi +  fi +} + +# clippaste - "Paste" data from clipboard to stdout +# +# Usage: +# +#   clippaste   - writes clipboard's contents to stdout +# +function clippaste() { +  emulate -L zsh +  if [[ $OSTYPE == darwin* ]]; then +    pbpaste +  elif [[ $OSTYPE == cygwin* ]]; then +    cat /dev/clipboard +  else +    which xclip &>/dev/null  +    if [[ $? != 0 ]]; then +      print "clipcopy: Platform $OSTYPE not supported or xclip not installed" >&2 +      return 1 +    fi +    xclip -out -selection clipboard +  fi +}
\ No newline at end of file diff --git a/plugins/coffee/coffee.plugin.zsh b/plugins/coffee/coffee.plugin.zsh index 1a7bedd87..c7b486a6b 100644 --- a/plugins/coffee/coffee.plugin.zsh +++ b/plugins/coffee/coffee.plugin.zsh @@ -6,11 +6,11 @@ cf () {  }  # compile & copy to clipboard  cfc () { -  cf $1 | pbcopy +  cf $1 | clipcopy  } -# compile from pasteboard & print -alias cfp='coffeeMe "$(pbpaste)"' +# compile from clipboard & print +alias cfp='coffeeMe "$(clippaste)"' -# compile from pasteboard and copy to clipboard -alias cfpc='cfp | pbcopy' +# compile from clipboard and copy to clipboard +alias cfpc='cfp | clipcopy' diff --git a/plugins/copydir/copydir.plugin.zsh b/plugins/copydir/copydir.plugin.zsh index 37bb5e086..4b918e815 100644 --- a/plugins/copydir/copydir.plugin.zsh +++ b/plugins/copydir/copydir.plugin.zsh @@ -1,3 +1,5 @@ +# Copies the pathname of the current directory to the system or X Windows clipboard  function copydir { -  pwd | tr -d "\r\n" | pbcopy +  emulate -L zsh +  print -n $PWD | clipcopy  }
\ No newline at end of file diff --git a/plugins/copyfile/copyfile.plugin.zsh b/plugins/copyfile/copyfile.plugin.zsh index 944a903c6..f4eca5acf 100644 --- a/plugins/copyfile/copyfile.plugin.zsh +++ b/plugins/copyfile/copyfile.plugin.zsh @@ -1,5 +1,7 @@ +# Copies the contents of a given file to the system or X Windows clipboard +# +# copyfile <file>  function copyfile { -  [[ "$#" != 1 ]] && return 1 -  local file_to_copy=$1 -  cat $file_to_copy | pbcopy +  emulate -L zsh +  clipcopy $1  }  | 
