aboutsummaryrefslogtreecommitdiff
path: root/modules/textadept
diff options
context:
space:
mode:
Diffstat (limited to 'modules/textadept')
-rw-r--r--modules/textadept/editing.lua12
1 files changed, 8 insertions, 4 deletions
diff --git a/modules/textadept/editing.lua b/modules/textadept/editing.lua
index 0fa078ca..09008311 100644
--- a/modules/textadept/editing.lua
+++ b/modules/textadept/editing.lua
@@ -315,10 +315,14 @@ end
function M.transpose_chars()
if buffer.current_pos == 0 then return end
local pos, byte = buffer.current_pos, buffer.char_at[buffer.current_pos]
- if byte == 10 or byte == 13 or pos == buffer.length then pos = pos - 1 end
- buffer:set_target_range(pos - 1, pos + 1)
- buffer:replace_target(buffer.target_text:reverse())
- buffer:goto_pos(pos + 1)
+ if byte == 10 or byte == 13 or pos == buffer.length then
+ pos = buffer:position_before(pos)
+ end
+ local pos1, pos2 = buffer:position_before(pos), buffer:position_after(pos)
+ local ch1, ch2 = buffer:text_range(pos1, pos), buffer:text_range(pos, pos2)
+ buffer:set_target_range(pos1, pos2)
+ buffer:replace_target(ch2..ch1)
+ buffer:goto_pos(pos2)
end
---