diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/args.lua | 6 | ||||
-rw-r--r-- | core/events.lua | 1 | ||||
-rw-r--r-- | core/file_io.lua | 8 | ||||
-rw-r--r-- | core/gui.lua | 9 | ||||
-rw-r--r-- | core/init.lua | 22 | ||||
-rw-r--r-- | core/keys.lua | 43 |
6 files changed, 25 insertions, 64 deletions
diff --git a/core/args.lua b/core/args.lua index e6db7696..f0cdba65 100644 --- a/core/args.lua +++ b/core/args.lua @@ -12,8 +12,6 @@ local M = {} -- Emitted when no command line arguments are passed to Textadept on startup. module('args')]] -local arg = arg - -- Contains registered command line switches. -- @class table -- @name switches @@ -79,6 +77,8 @@ local function show_help() end if not CURSES then M.register('-h', '--help', 0, show_help, 'Shows this') end +local arg = arg + -- For Windows, create arg table from single command line string (arg[0]). if WIN32 and not CURSES and #arg[0] > 0 then local P, C = lpeg.P, lpeg.C @@ -99,7 +99,7 @@ if not lfs.attributes(userhome) then lfs.mkdir(userhome) end if not lfs.attributes(userhome..'/init.lua') then local f = io.open(userhome..'/init.lua', 'w') if f then - f:write("_M.textadept = require 'textadept'\n") + f:write("_M.textadept = require('textadept')\n") f:close() end end diff --git a/core/events.lua b/core/events.lua index 51644644..02bb81b2 100644 --- a/core/events.lua +++ b/core/events.lua @@ -290,7 +290,6 @@ function M.disconnect(event, id) end local error_emitted = false - --- -- Sequentially calls all handler functions for *event* with the given -- arguments. diff --git a/core/file_io.lua b/core/file_io.lua index 137463d9..145159a4 100644 --- a/core/file_io.lua +++ b/core/file_io.lua @@ -79,7 +79,7 @@ io.recent_files = {} -- @class table -- @name boms io.boms = { - ['UTF-16BE'] = '\254\255', ['UTF-16LE'] = '\255\254', + ['UTF-16BE'] = '\254\255', ['UTF-16LE'] = '\255\254', ['UTF-32BE'] = '\0\0\254\255', ['UTF-32LE'] = '\255\254\0\0' } @@ -346,7 +346,6 @@ end -- of Textadept. local function update_modified_file() if not buffer.filename then return end - local buffer = buffer local utf8_filename = buffer.filename local filename = utf8_filename:iconv(_CHARSET, 'UTF-8') local mod_time = lfs.attributes(filename, 'modification') @@ -373,7 +372,6 @@ events_connect(events.VIEW_AFTER_SWITCH, update_modified_file) -- Set additional buffer functions. events_connect(events.BUFFER_NEW, function() - local buffer = buffer buffer.reload = reload buffer.save, buffer.save_as = save, save_as buffer.close = close @@ -382,8 +380,8 @@ end) -- Close initial "Untitled" buffer. events_connect(events.FILE_OPENED, function(utf8_filename) - local b = _BUFFERS[1] - if #_BUFFERS == 2 and not (b.filename or b._type or b.dirty) then + local buf = _BUFFERS[1] + if #_BUFFERS == 2 and not (buf.filename or buf._type or buf.dirty) then view:goto_buffer(1) buffer:close() end diff --git a/core/gui.lua b/core/gui.lua index 6869468f..445a65de 100644 --- a/core/gui.lua +++ b/core/gui.lua @@ -19,8 +19,6 @@ local gui = gui -- The text displayed by the buffer statusbar. module('gui')]] -local _L = _L - -- Helper function for printing messages to buffers. -- @see gui._print local function _print(buffer_type, ...) @@ -161,6 +159,7 @@ end local theme_file = not CURSES and 'theme' or 'theme_term' local THEME + --- -- Sets the editor theme name to *name* or the default platform theme. -- Themes with *name* in the *`_USERHOME`/themes/* directory override themes of @@ -348,23 +347,21 @@ events_connect(events.APPLEEVENT_ODOC, function(uri) return events_emit(events.URI_DROPPED, 'file://'..uri) end) -local string_format = string.format local EOLs = {_L['CRLF'], _L['CR'], _L['LF']} local GETLEXERLANGUAGE = _SCINTILLA.properties.lexer_language[1] -- Sets docstatusbar text. events_connect(events.UPDATE_UI, function() - local buffer = buffer local pos = buffer.current_pos local line, max = buffer:line_from_position(pos) + 1, buffer.line_count local col = buffer.column[pos] + 1 local lexer = buffer:private_lexer_call(GETLEXERLANGUAGE):match('^[^/]+') local eol = EOLs[buffer.eol_mode + 1] - local tabs = string_format('%s %d', buffer.use_tabs and _L['Tabs:'] or + local tabs = string.format('%s %d', buffer.use_tabs and _L['Tabs:'] or _L['Spaces:'], buffer.tab_width) local enc = buffer.encoding or '' local text = not CURSES and '%s %d/%d %s %d %s %s %s %s' or '%s %d/%d %s %d %s %s %s %s' - gui.docstatusbar_text = string_format(text, _L['Line:'], line, max, + gui.docstatusbar_text = string.format(text, _L['Line:'], line, max, _L['Col:'], col, lexer, eol, tabs, enc) end) diff --git a/core/init.lua b/core/init.lua index d3a57482..83da8eff 100644 --- a/core/init.lua +++ b/core/init.lua @@ -4,24 +4,22 @@ _RELEASE = "Textadept 6.6 beta" package.path = _HOME..'/core/?.lua;'..package.path -_SCINTILLA = require 'iface' -args = require 'args' -_L = require 'locale' -events = require 'events' -require 'file_io' -require 'lfs_ext' -require 'gui' -keys = require 'keys' +_SCINTILLA = require('iface') +args = require('args') +_L = require('locale') +events = require('events') +require('file_io') +require('lfs_ext') +require('gui') +keys = require('keys') _LEXERPATH = _USERHOME..'/lexers/?.lua;'.._HOME..'/lexers' - -gui.set_theme() - _M = {} -- modules table - -- LuaJIT compatibility. if jit then module, package.searchers, bit32 = nil, package.loaders, bit end +gui.set_theme() + --[[ This comment is for LuaDoc. --- -- Extends Lua's _G table to provide extra functions and fields for Textadept. diff --git a/core/keys.lua b/core/keys.lua index f6373af6..13459982 100644 --- a/core/keys.lua +++ b/core/keys.lua @@ -122,22 +122,10 @@ local M = {} -- The default value is `nil`. module('keys')]] -local ADD = '' -local CTRL, ALT, META, SHIFT = 'c'..ADD, 'a'..ADD, 'm'..ADD, 's'..ADD -if CURSES then ALT = META end +local CTRL, ALT, META, SHIFT = 'c', not CURSES and 'a' or 'm', 'm', 's' M.CLEAR = 'esc' M.LANGUAGE_MODULE_PREFIX = (not OSX and not CURSES and CTRL or META)..'l' --- Optimize for speed. -local OSX = OSX -local string = string -local string_byte, string_char = string.byte, string.char -local table_unpack = table.unpack -local xpcall, next, type = xpcall, next, type -local no_args = {} -local getmetatable = getmetatable -local error = function(e) events.emit(events.ERROR, e) end - --- -- Lookup table for string representations of key codes higher than 255. -- Key codes can be identified by temporarily uncommenting the `print()` @@ -195,13 +183,15 @@ end -- Export for command_entry.lua without creating LuaDoc. if CURSES then M.clear_key_sequence = clear_key_sequence end +local none = {} +local function key_error(e) events.emit(events.ERROR, e) end -- Runs a given command. -- This is also used by *modules/textadept/menu.lua*. -- @param command A function or table as described above. -- @param command_type Equivalent to `type(command)`. -- @return the value the command returns. local function run_command(command, command_type) - local f, args = command_type == 'function' and command or command[1], no_args + local f, args = command_type == 'function' and command or command[1], none if command_type == 'table' then args = command -- If the argument is a view or buffer, use the current one instead. @@ -214,7 +204,7 @@ local function run_command(command, command_type) end end end - local _, result = xpcall(f, error, table_unpack(args, 2)) + local _, result = xpcall(f, key_error, table.unpack(args, 2)) return result end M.run_command = run_command -- export for menu.lua without creating LuaDoc @@ -251,7 +241,7 @@ end -- @return `true` to stop handling the key; `nil` otherwise. local function keypress(code, shift, control, alt, meta) --print(code, M.KEYSYMS[code], shift, control, alt, meta) - local key = code < 256 and (not CURSES or code ~= 7) and string_char(code) or + local key = code < 256 and (not CURSES or code ~= 7) and string.char(code) or M.KEYSYMS[code] if not key then return end shift = shift and (code >= 256 or code == 9) -- printable chars are uppercased @@ -285,27 +275,6 @@ local function keypress(code, shift, control, alt, meta) end events.connect(events.KEYPRESS, keypress, 1) --- Returns the GDK integer keycode and modifier mask for a key sequence. --- This is used for creating menu accelerators. --- @param key_seq The string key sequence. --- @return keycode and modifier mask -local function get_gdk_key(key_seq) - if not key_seq then return nil end - local mods, key = key_seq:match('^([cams]*)(.+)$') - if not mods or not key then return nil end - local modifiers = ((mods:find('s') or key:lower() ~= key) and 1 or 0) + - (mods:find('c') and 4 or 0) + (mods:find('a') and 8 or 0) + - (mods:find('m') and 268435456 or 0) - local byte = string_byte(key) - if #key > 1 or byte < 32 then - for i, s in pairs(M.KEYSYMS) do - if s == key and i > 0xFE20 then byte = i break end - end - end - return byte, modifiers -end -M.get_gdk_key = get_gdk_key -- export for menu.lua without generating LuaDoc - --- -- Map of key bindings to commands, with language-specific key tables assigned -- to a lexer name key. |