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