aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2009-01-16 09:31:52 -0500
committermitchell <70453897+667e-11@users.noreply.github.com>2009-01-16 09:31:52 -0500
commit73da184d79d6219101f57a01519c04c0057a15c1 (patch)
treeb51b85e095d7e0ca57d4ed08a7a5e62503a718ff
parent7759c62c4e94b213553cf35210ef0197a0ffed8c (diff)
downloadtextadept-73da184d79d6219101f57a01519c04c0057a15c1.tar.gz
textadept-73da184d79d6219101f57a01519c04c0057a15c1.zip
Created a way to print messages to different kinds of buffers, not just error.
Earlier textadept.print() printed to the error buffer. Now it prints to its own message buffer. Additional textadept.print() calls print to that same buffer.
-rw-r--r--core/events.lua25
-rw-r--r--core/init.lua36
2 files changed, 37 insertions, 24 deletions
diff --git a/core/events.lua b/core/events.lua
index 52bc2177..2383fbf7 100644
--- a/core/events.lua
+++ b/core/events.lua
@@ -522,27 +522,4 @@ end
-- Default error handler.
-- Opens a new buffer (if one hasn't already been opened) for printing errors.
-- @param ... Error strings.
-function error(...)
- local function handle_error(...)
- local error_message = table.concat({...} , '\n')
- local error_buffer
- for index, buffer in ipairs(textadept.buffers) do
- if buffer.shows_errors then
- error_buffer = buffer
- if buffer.doc_pointer ~= textadept.focused_doc_pointer then
- view:goto_buffer(index)
- end
- break
- end
- end
- if not error_buffer then
- error_buffer = textadept.new_buffer()
- error_buffer.shows_errors = true
- end
- error_buffer:append_text(error_message..'\n')
- error_buffer:set_save_point()
- end
- pcall(handle_error, unpack{...}) -- prevent endless loops if this errors
-end
-
-textadept.print = error
+function error(...) textadept._print('shows_errors', ...) end
diff --git a/core/init.lua b/core/init.lua
index 38ed7734..da95f94c 100644
--- a/core/init.lua
+++ b/core/init.lua
@@ -34,6 +34,42 @@ function textadept.check_focused_buffer(buffer)
end
---
+-- Helper function for printing messages to buffers.
+-- Opens a new buffer (if one hasn't already been opened) for printing messages.
+-- @param buffer_type String type of message buffer.
+-- @param ... Message strings.
+-- @usage textadept._print('shows_errors', error_message)
+-- @usage textadept._print('shows_messages', message)
+function textadept._print(buffer_type, ...)
+ local function safe_print(...)
+ local message = table.concat({...}, '\t')
+ local message_buffer
+ for index, buffer in ipairs(textadept.buffers) do
+ if buffer[buffer_type] then
+ message_buffer = buffer
+ if buffer.doc_pointer ~= textadept.focused_doc_pointer then
+ view:goto_buffer(index)
+ end
+ break
+ end
+ end
+ if not message_buffer then
+ message_buffer = textadept.new_buffer()
+ message_buffer[buffer_type] = true
+ end
+ message_buffer:append_text(message..'\n')
+ message_buffer:set_save_point()
+ end
+ pcall(safe_print, ...) -- prevent endless loops if this errors
+end
+
+---
+-- Prints messages to the Textadept message buffer.
+-- Opens a new buffer (if one hasn't already been opened) for printing messages.
+-- @param ... Message strings.
+function textadept.print(...) textadept._print('shows_messages', ...) end
+
+---
-- Displays a CocoaDialog of a specified type with given arguments returning
-- the result.
-- @param kind The CocoaDialog type.