aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2009-02-05 17:21:52 -0500
committermitchell <70453897+667e-11@users.noreply.github.com>2009-02-05 17:21:52 -0500
commit25b785dfc7f125b66a6ed1fc7b661a2435dc7bf0 (patch)
tree97bc846795271bffdecf9acca3ca14d2a9fb0a3c
parent31b6f1d5a76c9a37da074011866fc6d68b0413d6 (diff)
downloadtextadept-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.lua16
-rw-r--r--src/lua_interface.c2
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;
}