/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to js/ace/ext-spellcheck.js

  • Committer: Erik Wikström
  • Date: 2013-04-09 09:09:31 UTC
  • mfrom: (21 lenasys)
  • mto: (21.1.1 lenasys)
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: wikxen@gmail.com-20130409090931-9jcs9kzg8et0912g
Remerged! Changed password hashes to VARCHAR(32)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
define('ace/ext/spellcheck', ['require', 'exports', 'module' , 'ace/lib/event', 'ace/editor', 'ace/config'], function(require, exports, module) {
 
2
 
 
3
var event = require("../lib/event");
 
4
 
 
5
exports.contextMenuHandler = function(e){
 
6
    var host = e.target;
 
7
    var text = host.textInput.getElement();
 
8
    if (!host.selection.isEmpty())
 
9
        return;
 
10
    var c = host.getCursorPosition();
 
11
    var r = host.session.getWordRange(c.row, c.column);
 
12
    var w = host.session.getTextRange(r);
 
13
 
 
14
    host.session.tokenRe.lastIndex = 0;
 
15
    if (!host.session.tokenRe.test(w))
 
16
        return;
 
17
    var PLACEHOLDER = "\x01\x01";
 
18
    var value = w + " " + PLACEHOLDER;
 
19
    text.value = value;
 
20
    text.setSelectionRange(w.length + 1, w.length + 1);
 
21
    text.setSelectionRange(0, 0);
 
22
    
 
23
    var afterKeydown = false;
 
24
    event.addListener(text, "keydown", function onKeydown() {
 
25
        event.removeListener(text, "keydown", onKeydown);
 
26
        afterKeydown = true;
 
27
    });
 
28
 
 
29
    host.textInput.setInputHandler(function(newVal) {
 
30
        console.log(newVal , value, text.selectionStart, text.selectionEnd)
 
31
        if (newVal == value)
 
32
            return '';
 
33
        if (newVal.lastIndexOf(value, 0) === 0)
 
34
            return newVal.slice(value.length);
 
35
        if (newVal.substr(text.selectionEnd) == value)
 
36
            return newVal.slice(0, -value.length);
 
37
        if (newVal.slice(-2) == PLACEHOLDER) {
 
38
            var val = newVal.slice(0, -2);
 
39
            if (val.slice(-1) == " ") {
 
40
                if (afterKeydown)
 
41
                    return val.substring(0, text.selectionEnd);
 
42
                val = val.slice(0, -1);
 
43
                host.session.replace(r, val);
 
44
                return "";
 
45
            }
 
46
        }
 
47
        
 
48
        return newVal;
 
49
    });
 
50
};
 
51
var Editor = require("../editor").Editor;
 
52
require("../config").defineOptions(Editor.prototype, "editor", {
 
53
    spellcheck: {
 
54
        set: function(val) {
 
55
            var text = this.textInput.getElement();
 
56
            text.spellcheck = !!val;
 
57
            if (!val)
 
58
                this.removeListener("nativecontextmenu", exports.contextMenuHandler);
 
59
            else
 
60
                this.on("nativecontextmenu", exports.contextMenuHandler);            
 
61
        },
 
62
        value: true
 
63
    }
 
64
});
 
65
 
 
66
});
 
67