updated for version 7.0141
diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim
index f699ca7..faad718 100644
--- a/runtime/autoload/ccomplete.vim
+++ b/runtime/autoload/ccomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2005 Sep 01
+" Last Change:	2005 Sep 05
 
 function! ccomplete#Complete(findstart, base)
   if a:findstart
@@ -21,12 +21,81 @@
   endif
 
   " return list of matches
-  let items = split(a:base, '\.\|->')
-  if len(items) == 1
+  if a:base !~ '\.\|->'
     " Only one part, no "." or "->": complete from tags file.
-    let diclist = taglist(items[0])
+    let diclist = taglist(a:base)
     return map(diclist, 'v:val["name"]')
   endif
-  return items
+
+  " Find variable locally in function or file.
+  let items = split(a:base, '\.\|->')
+
+  " At the moment we only do "aa.bb", not "aa.bb.cc"
+  if len(items) > 2
+    return []
+  endif
+
+  let line = ''
+  if searchdecl(items[0]) == 0 || searchdecl(items[0], 1) == 0
+    " Found, now figure out the type.
+    " TODO: join previous line if it makes sense
+    let line = getline('.')
+    let col = col('.')
+  else
+    " Find the variable in the tags file
+    let diclist = taglist(items[0])
+    for i in range(len(diclist))
+      " For now we only recognize a variable.
+      if diclist[i]['kind'] == 'v'
+	let line = diclist[i]['cmd']
+	if line[0] == '/' && line[1] == '^'
+	  " the command is a search pattern, remove the leading /^
+	  let line = strpart(line, 2)
+	endif
+	let col = match(line, items[0])
+	break
+      endif
+    endfor
+  endif
+
+  if line == ''
+    return []
+  endif
+
+  " Is there a * before the variable name?
+  let col -= 1
+  let star = 0
+  while col > 0
+    let col -= 1
+    if line[col] == '*'
+      let star = 1
+    elseif line[col] !~ '\s'
+      break
+    endif
+  endwhile
+
+  " Use the line up to the variable name and split it in tokens.
+  let lead = strpart(line, 0, col + 1)
+  let tokens = split(lead, '\s\+\|\<')
+
+  let basetext = matchstr(a:base, '.*\.\|->')
+
+  for i in range(len(tokens) - 1)
+    if tokens[i] == 'struct'
+      let name = tokens[i + 1]
+      " Todo: Use all tags files; What about local structures?
+      exe 'vimgrep /\<struct:' . name . '\>/j tags'
+      let res = []
+      for l in getqflist()
+	let memb = matchstr(l['text'], '[^\t]*')
+	if len(items) == 1 || memb =~ '^' . items[1]
+	  call add(res, basetext . memb)
+	endif
+      endfor
+      return res
+    endif
+  endfor
+
+  return tokens
 endfunction
 
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index dfdf097..85a17dd 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Sep 01
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Sep 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -86,6 +86,7 @@
 	    How to get the type of "var"?
 		tags file doesn't give type of typedef!  E.g., oparg_T is
 		listed with "^} oparg_T;$"
+		mlcscope may do it, but I can't find the sources
 	    How to get the members of that type?
 		tags file has struct: and class: fields
 
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 6ec8286..15daf6d 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Aug 31
+*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Sep 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -123,6 +123,10 @@
 s is replaced with "SS".  This does not happen with "~" to avoid backwards
 compatibility problems and because "SS" can't be changed back to a sharp s.
 
+"gd" previously found the very first occurrence of a variable in a function,
+that could be the function argument without type.  Now it finds the position
+where the type is given.
+
 ==============================================================================
 NEW FEATURES						*new-7*
 
@@ -569,6 +573,8 @@
 ":function" and ":autocmd" commands will show where it was last defined.
 (Yegappan Lakshmanan)
 
+":function /pattern" lists functions matching the pattern.
+
 ==============================================================================
 IMPROVEMENTS						*improvements-7*