]> Cypherpunks repositories - gostls13.git/commitdiff
misc/vim: fix Drop for imports after the first group.
authorDavid Symonds <dsymonds@golang.org>
Wed, 19 Sep 2012 22:11:07 +0000 (08:11 +1000)
committerDavid Symonds <dsymonds@golang.org>
Wed, 19 Sep 2012 22:11:07 +0000 (08:11 +1000)
Previously, an import block such as
import (
         "net"

                "stack"
        )
would not permit ":Drop stack" to work because we were aborting
the scan early, which is only correct when Import is in operation.

R=golang-dev, franciscossouza
CC=golang-dev
https://golang.org/cl/6532053

misc/vim/ftplugin/go/import.vim
misc/vim/ftplugin/go/test.sh

index 6ed5dd49d14498f65dde41a5d039fbbc75ce7c42..8cf89291e5bd40c6abdeba2e79150c1c28364973 100644 (file)
@@ -96,7 +96,7 @@ function! s:SwitchImport(enabled, localname, path)
                 let linestr = getline(line)
                 let m = matchlist(getline(line), '^\()\|\(\s\+\)\(\S*\s*\)"\(.\+\)"\)')
                 if empty(m)
-                    if siteprefix == ""
+                    if siteprefix == "" && a:enabled
                         " must be in the first group
                         break
                     endif
index bc32718df54eb8d6d336daf6d43bd8c6bedd6cc8..a6e31d8a3cafec3ea78164ec6e7b945ca316bb3e 100755 (executable)
@@ -22,36 +22,53 @@ EOF
 
 fail=0
 
-# usage: test_one new_import pattern
+# usage: test_one command pattern
 # Pattern is a PCRE expression that will match across lines.
 test_one() {
-  echo 2>&1 -n "Import $1: "
+  echo 2>&1 -n "$1: "
   vim -e -s -u /dev/null -U /dev/null --noplugin -c "source import.vim" \
-    -c "Import $1" -c 'wq! test.go' base.go
+    -c "$1" -c 'wq! test.go' base.go
   # ensure blank lines are treated correctly
   if ! gofmt test.go | cmp test.go; then
     echo 2>&1 "gofmt conflict"
-    gofmt test.go | diff -u test.go - | sed "s/^/\t/" 2>&1
+    gofmt test.go | diff -u test.go - | sed "s/^/      /" 2>&1
     fail=1
     return
   fi
   if ! grep -P -q "(?s)$2" test.go; then
     echo 2>&1 "$2 did not match"
-    cat test.go | sed "s/^/\t/" 2>&1
+    cat test.go | sed "s/^/    /" 2>&1
     fail=1
     return
   fi
   echo 2>&1 "ok"
 }
 
-test_one baz '"baz".*"bytes"'
-test_one io/ioutil '"io".*"io/ioutil".*"net"'
-test_one myc '"io".*"myc".*"net"'  # prefix of a site prefix
-test_one nat '"io".*"nat".*"net"'
-test_one net/http '"net".*"net/http".*"mycorp/foo"'
-test_one zoo '"net".*"zoo".*"mycorp/foo"'
-test_one mycorp/bar '"net".*"mycorp/bar".*"mycorp/foo"'
-test_one mycorp/goo '"net".*"mycorp/foo".*"mycorp/goo"'
+# Tests for Import
+
+test_one "Import baz" '"baz".*"bytes"'
+test_one "Import io/ioutil" '"io".*"io/ioutil".*"net"'
+test_one "Import myc" '"io".*"myc".*"net"'  # prefix of a site prefix
+test_one "Import nat" '"io".*"nat".*"net"'
+test_one "Import net/http" '"net".*"net/http".*"mycorp/foo"'
+test_one "Import zoo" '"net".*"zoo".*"mycorp/foo"'
+test_one "Import mycorp/bar" '"net".*"mycorp/bar".*"mycorp/foo"'
+test_one "Import mycorp/goo" '"net".*"mycorp/foo".*"mycorp/goo"'
+
+# Tests for Drop
+
+cat > base.go <<EOF
+package test
+
+import (
+       "foo"
+
+       "something"
+       "zoo"
+)
+EOF
+
+test_one "Drop something" '\([^"]*"foo"[^"]*"zoo"[^"]*\)'
 
 rm -f base.go test.go
 if [ $fail -gt 0 ]; then