diff options
author | 2009-01-16 09:31:52 -0500 | |
---|---|---|
committer | 2009-01-16 09:31:52 -0500 | |
commit | 73da184d79d6219101f57a01519c04c0057a15c1 (patch) | |
tree | b51b85e095d7e0ca57d4ed08a7a5e62503a718ff | |
parent | 7759c62c4e94b213553cf35210ef0197a0ffed8c (diff) | |
download | textadept-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.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. |