From 73da184d79d6219101f57a01519c04c0057a15c1 Mon Sep 17 00:00:00 2001 From: mitchell <70453897+667e-11@users.noreply.github.com> Date: Fri, 16 Jan 2009 09:31:52 -0500 Subject: 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. --- core/events.lua | 25 +------------------------ 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 @@ -33,6 +33,42 @@ function textadept.check_focused_buffer(buffer) end 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. -- cgit v1.2.3