[Libreoffice-commits] .: 2 commits - bin/add-modelines

Jan Holesovsky kendy at kemper.freedesktop.org
Wed Oct 13 00:56:26 PDT 2010


 bin/add-modelines |  174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 174 insertions(+)

New commits:
commit 100c107bfc5db0089c4de3715cfb35ea150386f6
Author: Sebastian Spaeth <Sebastian at SSpaeth.de>
Date:   Wed Oct 13 09:54:23 2010 +0200

    Add less whitespace around the Emacs/Vim modelines.

diff --git a/bin/add-modelines b/bin/add-modelines
index bd8673d..eaa253e 100644
--- a/bin/add-modelines
+++ b/bin/add-modelines
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # add-modelines, a simple script to add comments to
 # the beginning and end of source files for LibreOffice devs
@@ -105,7 +105,12 @@ function EditFile()
             if [ "${currentFirstLine:0:6}" != "${FirstLine:0:6}" ]; then
                 if [ "${currentLastLine:0:6}" != "${LastLine:0:6}" ]; then
                 {
-                    $awkCMD 'BEGIN{print "'"$FirstLine"'";print "\n"}{print $0}END{print "\n";print "'"$LastLine"'"}' "$FileToEdit" > "$FileToEdit".new
+                    echo "$FirstLine" > "$FileToEdit".new
+                    cat "$FileToEdit" >> "$FileToEdit".new
+                    if [ "x${currentLastLine}" != "x" ] ; then
+                        echo "" >> "$FileToEdit".new
+                    fi
+                    echo "$LastLine" >> "$FileToEdit".new
                     mv "$FileToEdit".new "$FileToEdit"
                     echo "$FileToEdit updated"
                 }
commit 6986d4121be457fcfcac0d01bbbc234057499012
Author: Jesse Adelman <someone at boldandbusted.com>
Date:   Wed Oct 13 09:49:20 2010 +0200

    Script to add Emacs & Vim modelines to source files.

diff --git a/bin/add-modelines b/bin/add-modelines
new file mode 100644
index 0000000..bd8673d
--- /dev/null
+++ b/bin/add-modelines
@@ -0,0 +1,169 @@
+#!/bin/sh
+
+# add-modelines, a simple script to add comments to
+# the beginning and end of source files for LibreOffice devs
+
+# Blame goes to Jesse Adelman (at least at first)
+# someone AT boldandbusted dotty-dot com
+# http://www.boldandbusted.com/
+# (c) 2010 Bold and Busted LLC
+# Licensed under the MPL/LGPLv3 or later
+# First edit 2010-10-08
+# Updated on 2010-10-09
+# Version 0.7
+
+# NOTE: At present, this script only works for files with C-like comments.
+# NOTE: If you don't specify -p, the script will act on the current working directory.
+# NOTE: If no arguments are specified, the defitions below are in effect.
+
+# TO DO
+#  - Deuglifiy?
+#  - Make source file type agnostic modelines?
+#  - Too many/too few comments?
+#  - Handle top level source directories with whitespace names? (Do they exist?)
+
+# Turn off globbing, helps with SourceFiles
+set -f
+
+# POSIX
+set -o posix
+
+# Change these to taste
+FirstLine='/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */'
+LastLine='/* vim:set shiftwidth=4 softtabstop=4 expandtab: */'
+SourceFiles='*.cxx *.cpp'
+
+# Set defaults (don't change these)
+ModelineReplace="false"
+
+# Functions
+
+function SetEnvironment()
+{
+     if [ -n "$(which tail)" -a -n "$(which head)" ]; then
+        {
+            headCMD=`which head`
+            tailCMD=`which tail`
+        }
+        else
+        {
+            echo "Missing head or tail, exiting..."
+            exit 1
+        }
+    fi
+    if [ -n "$(which find)" ]; then
+        findCMD=`which find`
+        else
+        {
+            echo "Missing find, exiting..."
+            exit 1
+        }
+    fi
+    if [ -n "$(which awk)" ]; then
+        awkCMD=`which awk`
+        else
+        {
+            echo "Missing awk, exiting..."
+            exit 1
+        }
+    fi
+}
+
+function EditFile()
+{
+    local FileToEdit
+    local currentFirstLine
+    local currentLastLine
+
+    FileToEdit="$1"
+
+    currentFirstLine=`$headCMD -1 "$FileToEdit"`
+    currentLastLine=`$tailCMD -1 "$FileToEdit"`
+
+    case "$ModelineReplace" in
+        "true" )
+            if [ "${currentFirstLIne:0:6}" = "${FirstLine:0:6}" ]; then
+            {
+                echo "$FirstLine" > "$FileToEdit".new
+                $tailCMD -n +2 "$FileToEdit" >> "$FileToEdit".new
+            }
+            fi
+            if [ -e "$FileToEdit.new" ]; then
+            {
+                echo "$LastLine" >> "$FileToEdit".new
+            }
+            fi
+            if [ "${currentLastLine:0:6}" = "${LastLine:0:6}" ]; then
+            {
+                $headCMD -n -1 "$FileToEdit" > "$FileToEdit".new
+                echo "$LastLine" >> "$FileToEdit".new
+            }
+            fi
+            mv "$FileToEdit".new "$FileToEdit"
+            echo "$FileToEdit updated" ;;
+        "false" )
+            if [ "${currentFirstLine:0:6}" != "${FirstLine:0:6}" ]; then
+                if [ "${currentLastLine:0:6}" != "${LastLine:0:6}" ]; then
+                {
+                    $awkCMD 'BEGIN{print "'"$FirstLine"'";print "\n"}{print $0}END{print "\n";print "'"$LastLine"'"}' "$FileToEdit" > "$FileToEdit".new
+                    mv "$FileToEdit".new "$FileToEdit"
+                    echo "$FileToEdit updated"
+                }
+                fi
+            fi ;;
+    esac
+}
+
+function PrintUsage()
+{
+    echo "Usage: $0 [-z] [-s \"<sourcefile glob>\"] [-p <path to source>]"
+}
+
+# Main
+
+SetEnvironment
+
+# Get command line options
+
+while getopts "zs:p:" opt; do
+    case $opt in
+        z) ModelineReplace="true" ;;
+        s) SourceFiles="$OPTARG" ;;
+        p) findPath="$OPTARG" ;;
+        *) PrintUsage
+           exit 1 ;;
+    esac
+done
+
+if [ $OPTIND -gt 1 ]; then
+    shift $(($OPTIND - 1))
+fi
+
+if [ $# -gt 1 ]; then
+{
+    PrintUsage
+    echo "Remember to quote the source file globs after -s"
+    exit 1
+}
+fi
+
+# Create GNU find expressions that traverse the filesystem once and only once
+if [ -z "$findPath" ]; then
+    findArgs='.'
+    else
+        findArgs="$findPath"
+fi
+
+for FileType in ${SourceFiles}; do
+    findArgs="$findArgs"' ( -iname '"$FileType"' -print ) , '
+done
+
+# This gets rid of the final " , " in the find argument list
+findArgs="${findArgs:0:(${#findArgs}-2)}"
+
+for file in $($findCMD $findArgs); do
+    EditFile "$file"
+    echo "Completed: " "$file"
+done
+
+# vim:set shiftwidth=4 softtabstop=4 expandtab:


More information about the Libreoffice-commits mailing list