diff options
Diffstat (limited to 'modules/textadept')
-rw-r--r-- | modules/textadept/editing.lua | 3 | ||||
-rw-r--r-- | modules/textadept/keys.lua | 30 | ||||
-rw-r--r-- | modules/textadept/menu.lua | 3 | ||||
-rw-r--r-- | modules/textadept/snippets.lua | 4 |
4 files changed, 8 insertions, 32 deletions
diff --git a/modules/textadept/editing.lua b/modules/textadept/editing.lua index 93e34aec..ced101b2 100644 --- a/modules/textadept/editing.lua +++ b/modules/textadept/editing.lua @@ -450,7 +450,8 @@ function M.convert_indentation() local indent, e = line_indentation[line], line_indent_position[line] current_indentation = buffer:text_range(s, e) if buffer.use_tabs then - new_indentation = ('\t'):rep(indent / buffer.tab_width) + -- Need integer division and LuaJIT does not have // operator. + new_indentation = ('\t'):rep(math.floor(indent / buffer.tab_width)) else new_indentation = (' '):rep(indent) end diff --git a/modules/textadept/keys.lua b/modules/textadept/keys.lua index ca515d9a..09f9bab8 100644 --- a/modules/textadept/keys.lua +++ b/modules/textadept/keys.lua @@ -219,14 +219,6 @@ local M = {} -- ‡: Ctrl+Enter in Win32 curses. module('textadept.keys')]] --- UTF-8 handling tables. -local utf8_lengths = { -- {max code point, UTF-8 length} - {0x80, 1}, {0x800, 2}, {0x10000, 3}, {0x200000, 4}, {0x4000000, 5} -} -local lead_bytes = { -- [UTF-8 length] = {UTF-8 lead bits, remaining mask} - {0, 0x7F}, {0xC0, 0x1F}, {0xE0, 0x0F}, {0xF0, 0x7}, {0xF8, 0x3}, {0xFC, 0x1} -} - -- Utility functions. M.utils = { delete_word = function() @@ -253,11 +245,7 @@ M.utils = { show_style = function() local pos = buffer.current_pos local char = buffer:text_range(pos, buffer:position_after(pos)) - if char == '' then char = '\0' end - local code = bit32.band(char:byte(), lead_bytes[#char][2]) - for i = 2, #char do - code = bit32.bor(bit32.lshift(code, 6), bit32.band(char:byte(i), 0x3F)) - end + local code = utf8.codepoint(char) local bytes = string.rep(' 0x%X', #char):format(char:byte(1, #char)) local style = buffer.style_at[pos] local text = string.format("'%s' (U+%04X:%s)\n%s %s\n%s %s (%d)", char, @@ -660,21 +648,7 @@ end if OSX or CURSES then -- UTF-8 input. keys.utf8_input = {['\n'] = {ui.command_entry.finish_mode, function(code) - local c = tonumber(code, 16) - -- Determine the number of bytes in UTF-8 character to insert. - local buf, len = {}, 6 - for i = 1, #utf8_lengths do - if c < utf8_lengths[i][1] then len = utf8_lengths[i][2] break end - end - -- Produce UTF-8 bytes. - for i = len, 2, -1 do - buf[i], c = bit32.bor(0x80, bit32.band(c, 0x3F)), bit32.rshift(c, 6) - end - -- Construct the lead UTF-8 byte. - buf[1] = bit32.bor(lead_bytes[len][1], bit32.band(c, lead_bytes[len][2])) - -- Transform bytes into strings and perform the insertion. - for i = 1, #buf do buf[i] = string.char(buf[i]) end - _G.buffer:add_text(table.concat(buf)) + _G.buffer:add_text(utf8.char(tonumber(code, 16))) end}} keys[OSX and 'mU' or 'mu'] = {ui.command_entry.enter_mode, 'utf8_input'} end diff --git a/modules/textadept/menu.lua b/modules/textadept/menu.lua index 19d0687d..97e6ce2d 100644 --- a/modules/textadept/menu.lua +++ b/modules/textadept/menu.lua @@ -7,8 +7,7 @@ local M = {} --- -- Defines the menus used by Textadept. -- Menus are simply tables and may be edited in place. Submenus have `title` --- keys with string text. Use the '#' operator (instead of `ipairs()`) for --- iteration. +-- keys with string text. -- If applicable, load this module last in your *~/.textadept/init.lua*, after -- [`textadept.keys`]() since it looks up defined key commands to show them in -- menus. diff --git a/modules/textadept/snippets.lua b/modules/textadept/snippets.lua index 0e31e6bb..81a4247f 100644 --- a/modules/textadept/snippets.lua +++ b/modules/textadept/snippets.lua @@ -102,7 +102,9 @@ local function new_snippet(text, trigger) if #lines > 1 then -- Match indentation on all lines after the first. local indent_size = #buffer:get_cur_line():match('^%s*') - if not use_tabs then indent_size = indent_size / buffer.tab_width end + if not use_tabs then + indent_size = math.floor(indent_size / buffer.tab_width) -- for Lua 5.3 + end local additional_indent = indent[use_tabs]:rep(indent_size) for i = 2, #lines do lines[i] = additional_indent..lines[i] end end |