diff options
-rw-r--r-- | core/events.lua | 25 | ||||
-rw-r--r-- | core/init.lua | 36 |
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. |