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*
 
