From c769031e789077917c79795f1f3b5b0186184b55 Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 22 Jan 2015 22:38:32 +0400 Subject: [PATCH] [vim] fix w for non ascii chars --- lib/ace/keyboard/vim.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/ace/keyboard/vim.js b/lib/ace/keyboard/vim.js index a8bba7ec..7c19299d 100644 --- a/lib/ace/keyboard/vim.js +++ b/lib/ace/keyboard/vim.js @@ -66,23 +66,25 @@ define(function(require, exports, module) { var d = ""; function format(p) { if (typeof p != "object") - return p + "" + return p + ""; if ("line" in p) { - return p.line + ":" + p.ch + return p.line + ":" + p.ch; } if ("anchor" in p) { - return format(p.anchor) + "->" + format(p.head) + return format(p.anchor) + "->" + format(p.head); } if (Array.isArray(p)) - return "[" + p.map(function(x) {return format(x)})+"]" - return JSON.stringify(p) + return "[" + p.map(function(x) { + return format(x); + }) + "]"; + return JSON.stringify(p); } for (var i = 0; i < arguments.length; i++) { - var p = arguments[i] - var f = format(p) - d+= f+" " + var p = arguments[i]; + var f = format(p); + d += f + " "; } - console.log(d) + console.log(d); } var Range = require("../range").Range; var EventEmitter = require("../lib/event_emitter").EventEmitter; @@ -94,6 +96,7 @@ define(function(require, exports, module) { var useragent = require("../lib/useragent"); var SearchHighlight = require("../search_highlight").SearchHighlight; var multiSelectCommands = require("../commands/multi_select_commands"); + var TextModeTokenRe = require("ace/mode/text").Mode.prototype.tokenRe; require("../multi_select"); var CodeMirror = function(ace) { @@ -157,6 +160,11 @@ define(function(require, exports, module) { CodeMirror.signal = function(o, name, e) { return o._signal(name, e) }; CodeMirror.on = event.addListener; CodeMirror.off = event.removeListener; + CodeMirror.isWordChar = function(ch) { + TextModeTokenRe.lastIndex = 0; + return TextModeTokenRe.test(ch); + }; + (function() { oop.implement(CodeMirror.prototype, EventEmitter); @@ -1121,7 +1129,9 @@ dom.importCssString(".normal-mode .ace_cursor{\ } var numberRegex = /[\d]/; - var wordRegexp = [(/\w/), (/[^\w\s]/)], bigWordRegexp = [(/\S/)]; + var wordRegexp = [{test: CodeMirror.isWordChar}, {test: function(ch) { + return !CodeMirror.isWordChar(ch) && !/\s/.test(ch); + }}], bigWordRegexp = [(/\S/)]; function makeKeyRange(start, size) { var keys = []; for (var i = start; i < start + size; i++) {