aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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.