diff options
author | 2009-02-05 17:21:52 -0500 | |
---|---|---|
committer | 2009-02-05 17:21:52 -0500 | |
commit | 25b785dfc7f125b66a6ed1fc7b661a2435dc7bf0 (patch) | |
tree | 97bc846795271bffdecf9acca3ca14d2a9fb0a3c | |
parent | 31b6f1d5a76c9a37da074011866fc6d68b0413d6 (diff) | |
download | textadept-25b785dfc7f125b66a6ed1fc7b661a2435dc7bf0.tar.gz textadept-25b785dfc7f125b66a6ed1fc7b661a2435dc7bf0.zip |
Fixed a bug and added enhancements to Find in Files.
Double-clicking a search result will open the file in the previous view (if it
exists) rather than clobbering the current one. Also added the find text to the
output.
-rw-r--r-- | core/ext/find.lua | 16 | ||||
-rw-r--r-- | src/lua_interface.c | 2 |
2 files changed, 12 insertions, 6 deletions
diff --git a/core/ext/find.lua b/core/ext/find.lua index 4938f3af..2608e862 100644 --- a/core/ext/find.lua +++ b/core/ext/find.lua @@ -4,6 +4,7 @@ local textadept = _G.textadept local find = textadept.find local MARK_REPLACEALL_END = 0 +local previous_view --- -- [Local table] Text escape sequences with their associated characters. @@ -91,7 +92,7 @@ function find.find(text, next, flags, nowrap, wrapped) local match_case = find.match_case local whole_word = find.whole_word local format = string.format - local matches = {} + local matches = { 'Find: '..text } function search_file(file) local line_num = 1 for line in io.lines(file) do @@ -118,7 +119,9 @@ function find.find(text, next, flags, nowrap, wrapped) end end search_dir(dir) - if #matches == 0 then matches[1] = locale.FIND_NO_RESULTS end + if #matches == 1 then matches[2] = locale.FIND_NO_RESULTS end + matches[#matches + 1] = '' + previous_view = view textadept._print('shows_files_found', table.concat(matches, '\n')) end return @@ -252,9 +255,12 @@ function goto_file(pos, line_num) if buffer.shows_files_found then line = buffer:get_line(line_num) local file, line_num = line:match('^(.+):(%d+):.+$') - textadept.io.open(file) - buffer:ensure_visible_enforce_policy(line_num - 1) - buffer:goto_line(line_num - 1) + if file and line_num then + if previous_view then previous_view:focus() end + textadept.io.open(file) + buffer:ensure_visible_enforce_policy(line_num - 1) + buffer:goto_line(line_num - 1) + end end end textadept.events.add_handler('double_click', goto_file) diff --git a/src/lua_interface.c b/src/lua_interface.c index 677e9709..2d0b30e0 100644 --- a/src/lua_interface.c +++ b/src/lua_interface.c @@ -1412,7 +1412,7 @@ static int l_cf_buffer_text_range(lua_State *lua) { static int l_cf_view_focus(lua_State *lua) { GtkWidget *editor = l_checkview(lua, 1); - gtk_widget_grab_focus(editor); + if (GTK_IS_WIDGET(editor)) gtk_widget_grab_focus(editor); return 0; } |