diff --git a/NEWS b/NEWS index 25448c1f..9b7d4ad5 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@
 2008-XX-XX:
     * version 2.0 (probably)
+    * add 'wildignore' option
     * add :finish command
     * new events BookmarkPost, ShellCmdPost, QuitPre
     * add 'cdpath' option
diff --git a/content/completion.js b/content/completion.js
index 04a8cd9a..9fce0d59 100644
--- a/content/completion.js
+++ b/content/completion.js
@@ -225,6 +225,7 @@ liberator.Completion = function () //{{{
         {
             var dir = "", compl = "";
             var matches = filter.match(/^(.*[\/\\])?(.*?)$/);
+
             if (matches)
             {
                 dir = matches[1] || ""; // "" is expanded inside readDirectory to the current dir
@@ -232,9 +233,20 @@ liberator.Completion = function () //{{{
             }
 
             var files = [], mapped = [];
+
             try
             {
                 files = liberator.io.readDirectory(dir);
+
+                if (liberator.options["wildignore"])
+                {
+                    var wimRegexp = new RegExp("(^" + liberator.options["wildignore"].replace(",", "|", "g") + ")$");
+
+                    files = files.filter(function (f) {
+                        return f.isDirectory() || !wimRegexp.test(f.leafName);
+                    });
+                }
+
                 mapped = files.map(function (file) {
                     return [tail ? file.leafName : (dir + file.leafName), file.isDirectory() ? "Directory" : "File"];
                 }).sort(function (a, b) {
diff --git a/content/ui.js b/content/ui.js
index 41ca4e27..5f4380e4 100644
--- a/content/ui.js
+++ b/content/ui.js
@@ -340,6 +340,25 @@ liberator.CommandLine = function () //{{{
             },
         });
 
+    liberator.options.add(["wildignore", "wig"],
+        "List of file patterns to ignore when completing files",
+        "stringlist", "",
+        {
+            validator: function (value)
+            {
+                // TODO: allow for escaping the ","
+                try
+                {
+                    new RegExp("^(" + value.replace(",", "|", "g") + ")$");
+                    return true;
+                }
+                catch (e)
+                {
+                    return false;
+                }
+            }
+        });
+
     liberator.options.add(["wildoptions", "wop"],
         "Change how command line completion is done",
         "stringlist", "",
diff --git a/locale/en-US/options.txt b/locale/en-US/options.txt
index 571e4248..a7b6086a 100644
--- a/locale/en-US/options.txt
+++ b/locale/en-US/options.txt
@@ -705,6 +705,16 @@ want no bell at all.
 ____
 
 
+|\'wildignore'| |\'wig'|
+||'wildignore' 'wig'|| stringlist (default: "")
+____
+List of file patterns to ignore when completing files. E.g. to ignore object
+files and Vim swap files [c]:set wildignore=.*\.o,\..*\.s[a-z]{2}[c]
+
+Note: Unlike Vim each pattern is a regexp rather than a glob.
+____
+
+
 |\'wim'| |\'wildmode'|
 ||'wildmode' 'wim'|| stringlist (default: "list:full")
 ____
diff --git a/vimperator.vim b/vimperator.vim
index e25c8579..150d27b0 100644
--- a/vimperator.vim
+++ b/vimperator.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         VIMperator configuration file
 " Maintainer:       Doug Kearns 
-" Last Change:      2008 Sep 02
+" Last Change:      2008 Sep 04
 
 if exists("b:current_syntax")
   finish
@@ -46,8 +46,8 @@ syn keyword vimperatorOption activate act activelinkfgcolor alfc activelinkbgcol
     \ linkfgcolor lfc linksearch lks nolinksearch nolks loadplugins noloadplugins lpl nolpl more newtab nextpattern nomore
     \ pageinfo pa popups pps preload nopreload previewheight pvh previouspattern online noonline scroll scr shell sh shellcmdflag
     \ shcf showmode smd noshowmode nosmd showstatuslinks ssli showtabline stal smartcase scs nosmartcase noscs suggestengines
-    \ titlestring usermode um nousermode noum urlseparator verbose vbs visualbell vb novisualbell novb visualbellstyle wildmode
-    \ wim wildoptions wop wordseparators wsp
+    \ titlestring usermode um nousermode noum urlseparator verbose vbs visualbell vb novisualbell novb visualbellstyle wildignore
+    \ wig wildmode wim wildoptions wop wordseparators wsp
     \ contained
 
 syn region vimperatorJavascript start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=" end="$" contains=@javascriptTop keepend oneline