-- Copyright 2007-2008 Mitchell mitchellcaladbolg.net. See LICENSE. package.path = _HOME..'/core/?.lua;'..package.path if not WIN32 then package.cpath = _HOME..'/core/?.so;'..package.cpath else package.cpath = _HOME..'/core/?.dll;'..package.cpath end _THEME = '' require 'iface' require 'events' require 'file_io' if not MAC then require 'lua_dialog' end --- -- Checks if the buffer being indexed is the currently focused buffer. -- This is necessary because any buffer actions are performed in the focused -- views' buffer, which may not be the buffer being indexed. Throws an error -- if the check fails. -- @param buffer The buffer in question. function textadept.check_focused_buffer(buffer) if type(buffer) ~= 'table' or not buffer.doc_pointer then error('Buffer argument expected.', 2) elseif textadept.focused_doc_pointer ~= buffer.doc_pointer then error('The indexed buffer is not the focused one.', 2) end end --- -- Displays a CocoaDialog of a specified type with given arguments returning -- the result. -- @param kind The CocoaDialog type. -- @param ... A table of key, value arguments. Each key is a --key switch with -- a "value" value. If value is nil, it is omitted and just the switch is -- used. -- @return string CocoaDialog result. function cocoa_dialog(kind, opts) local args = { kind } for k, v in pairs(opts) do args[#args + 1] = '--'..k if k == 'items' and kind:match('dropdown') then if not MAC then for item in v:gmatch('"(.-)"%s+') do args[#args + 1] = item end else args[#args + 1] = v end elseif type(v) == 'string' then args[#args + 1] = not MAC and v or '"'..v..'"' end end if not MAC then return lua_dialog.run(args) else local cocoa_dialog = '/CocoaDialog.app/Contents/MacOS/CocoaDialog ' local p = io.popen( _HOME..cocoa_dialog..table.concat(args, ' ') ) local out = p:read('*all') p:close() return out end end