aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/textadept/snapopen.lua28
1 files changed, 16 insertions, 12 deletions
diff --git a/modules/textadept/snapopen.lua b/modules/textadept/snapopen.lua
index 3f27c9f0..74c2c2fc 100644
--- a/modules/textadept/snapopen.lua
+++ b/modules/textadept/snapopen.lua
@@ -9,7 +9,7 @@ module('_m.textadept.snapopen', package.seeall)
-- Markdown:
-- ## Settings
--
--- * `PATHS`: Table of default paths to search.
+-- * `PATHS`: Table of default UTF-8 paths to search.
-- * `DEFAULT_DEPTH`: Maximum directory depth to search (defaults to 4).
-- * `MAX`: Maximum number of files to list (defaults to 1000).
--
@@ -46,24 +46,26 @@ local DEPTH = DEFAULT_DEPTH
local function exclude(file, filter)
if not filter then return false end
local string_match, string_sub = string.match, string.sub
+ local utf8_file = file:iconv('UTF-8', _CHARSET)
for i = 1, #filter do
local patt = filter[i]
if string_sub(patt, 1, 1) ~= '!' then
- if string_match(file, patt) then return true end
+ if string_match(utf8_file, patt) then return true end
else
- if not string_match(file, string_sub(patt, 2)) then return true end
+ if not string_match(utf8_file, string_sub(patt, 2)) then return true end
end
end
return false
end
-- Adds a directory's contents to a list of files.
--- @param dir The directory to open.
+-- @param utf8_dir The UTF-8 directory to open.
-- @param list The list of files to add dir's contents to.
-- @param depth The current depth of nested folders.
-- @param filter The filter table.
-local function add_directory(dir, list, depth, filter)
+local function add_directory(utf8_dir, list, depth, filter)
local string_match, string_gsub, MAX = string.match, string.gsub, MAX
+ local dir = utf8_dir:iconv(_CHARSET, 'UTF-8')
for file in lfs_dir(dir) do
if not string_match(file, '^%.%.?$') then
file = dir..(not WIN32 and '/' or '\\')..file
@@ -81,12 +83,14 @@ end
---
-- Quickly open a file in set of directories.
--- @param paths A string directory path or table of directory paths to search.
+-- @param utf8_paths A UTF-8 string directory path or table of UTF-8 directory
+-- paths to search.
-- @param filter A filter for files and folders to exclude. The filter may be
-- a string or table. Each filter is a Lua pattern. Any files matching a
-- filter are excluded. Prefix a pattern with '!' to exclude any files that
-- do not match the filter. Directories can be excluded by adding filters to
--- a table assigned to a 'folders' key in the filter table.
+-- a table assigned to a 'folders' key in the filter table. All strings should
+-- be UTF-8 encoded.
-- @param exclusive Flag indicating whether or not to exclude PATHS in the
-- search. Defaults to false.
-- @param depth Number of directories to recurse into for finding files.
@@ -95,17 +99,17 @@ end
-- @usage _m.textadept.snapopen.open(buffer.filename:match('^.+/'), nil, true)
-- @usage _m.textadept.snapopen.open(nil, '!%.lua$')
-- @usage _m.textadept.snapopen.open(nil, { folders = { '%.hg' } })
-function open(paths, filter, exclusive, depth)
- if not paths then paths = {} end
- if type(paths) == 'string' then paths = { paths } end
+function open(utf8_paths, filter, exclusive, depth)
+ if not utf8_paths then utf8_paths = {} end
+ if type(utf8_paths) == 'string' then utf8_paths = { utf8_paths } end
if not filter then filter = {} end
if type(filter) == 'string' then filter = { filter } end
if not exclusive then
- for _, path in ipairs(PATHS) do paths[#paths + 1] = path end
+ for _, path in ipairs(PATHS) do utf8_paths[#utf8_paths + 1] = path end
end
DEPTH = depth or DEFAULT_DEPTH
local list = {}
- for _, path in ipairs(paths) do add_directory(path, list, 1, filter) end
+ for _, path in ipairs(utf8_paths) do add_directory(path, list, 1, filter) end
if #list >= MAX then
gui.dialog('ok-msgbox',
'--title', L('File Limit Exceeded'),