openSUSE Paste > Fix tabs
Login

Info:

By Ruslan Osmanov, 3 Years ago, written in Bash. This post will never expire.

URL: http://susepaste.org/69028693

  1. #!/bin/bash -
  2. #===============================================================================
  3. #
  4. #          FILE:  fixtab.sh
  5. #
  6. #         USAGE:  ./fixtab.sh <directory>
  7. #
  8. #   DESCRIPTION:  Convert expanded tabs into tabs with 4 space width
  9. #
  10. #       OPTIONS: $1 directory
  11. #        AUTHOR: Ruslan Osmanov
  12. #       COMPANY:
  13. #       CREATED: 04/08/2011 03:26:00 PM UZT
  14. #===============================================================================
  15.  
  16. set -o nounset                              # Treat unset variables as an error
  17.  
  18. DIR=$1
  19.  
  20. function usage(){
  21.         echo "bash $0 <directory>"
  22. }
  23.  
  24. [[ ! -d $DIR ]] && usage
  25.  
  26. # Correct existing modelines
  27. find $DIR -name *.php -exec \
  28.         sed -i -e 's%set expandtab:%set noexpandtab:%g' {} \;
  29.  
  30. # Retab & format source code
  31. find $DIR -name *.php -exec \
  32.         vim -u NONE \
  33.         -c 'set ft=php' \
  34.         -c 'set shiftwidth=4' \
  35.         -c 'set tabstop=4' \
  36.         -c 'set noexpandtab!' \
  37.         -c 'set noet' \
  38.         -c 'retab!' \
  39.         -c 'bufdo! "execute normal gg=G"' \
  40.         -c wq \
  41.         {} \;