Merge branch 'master' of github.com:ajaxorg/ace
This commit is contained in:
commit
3b3ac82634
3 changed files with 62 additions and 15 deletions
|
|
@ -50,7 +50,7 @@ var Text = function(parentEl) {
|
||||||
this.element.className = "ace_layer ace_text-layer";
|
this.element.className = "ace_layer ace_text-layer";
|
||||||
parentEl.appendChild(this.element);
|
parentEl.appendChild(this.element);
|
||||||
|
|
||||||
this.$characterSize = this.$measureSizes();
|
this.$characterSize = this.$measureSizes() || {width: 0, height: 0};
|
||||||
this.$pollSizeChanges();
|
this.$pollSizeChanges();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -75,14 +75,18 @@ var Text = function(parentEl) {
|
||||||
return this.$characterSize.width || 1;
|
return this.$characterSize.width || 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.checkForSizeChanges = function() {
|
||||||
|
var size = this.$measureSizes();
|
||||||
|
if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {
|
||||||
|
this.$characterSize = size;
|
||||||
|
this._dispatchEvent("changeCharaterSize", {data: size});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.$pollSizeChanges = function() {
|
this.$pollSizeChanges = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
setInterval(function() {
|
setInterval(function() {
|
||||||
var size = self.$measureSizes();
|
self.checkForSizeChanges();
|
||||||
if (self.$characterSize.width !== size.width || self.$characterSize.height !== size.height) {
|
|
||||||
self.$characterSize = size;
|
|
||||||
self._dispatchEvent("changeCharaterSize", {data: size});
|
|
||||||
}
|
|
||||||
}, 500);
|
}, 500);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -92,7 +96,7 @@ var Text = function(parentEl) {
|
||||||
fontWeight : 1,
|
fontWeight : 1,
|
||||||
fontStyle : 1,
|
fontStyle : 1,
|
||||||
lineHeight : 1
|
lineHeight : 1
|
||||||
},
|
};
|
||||||
|
|
||||||
this.$measureSizes = function() {
|
this.$measureSizes = function() {
|
||||||
var n = 1000;
|
var n = 1000;
|
||||||
|
|
@ -134,6 +138,12 @@ var Text = function(parentEl) {
|
||||||
height: this.$measureNode.offsetHeight,
|
height: this.$measureNode.offsetHeight,
|
||||||
width: this.$measureNode.offsetWidth / (n * 2)
|
width: this.$measureNode.offsetWidth / (n * 2)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Size and width can be null if the editor is not visible or
|
||||||
|
// detached from the document
|
||||||
|
if (size.width == 0 && size.height == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,13 @@ var JavaHighlightRules = function() {
|
||||||
// taken from http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
|
// taken from http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
|
||||||
var keywords = lang.arrayToMap(
|
var keywords = lang.arrayToMap(
|
||||||
("abstract|continue|for|new|switch|" +
|
("abstract|continue|for|new|switch|" +
|
||||||
"assert|default|goto|package|synchronized" +
|
"assert|default|goto|package|synchronized|" +
|
||||||
"boolean|do|if|private|this" +
|
"boolean|do|if|private|this|" +
|
||||||
"break|double|implements|protected|throw" +
|
"break|double|implements|protected|throw|" +
|
||||||
"byte|else|import|public|throws" +
|
"byte|else|import|public|throws|" +
|
||||||
"case|enum|instanceof|return|transient" +
|
"case|enum|instanceof|return|transient|" +
|
||||||
"catch|extends|int|short|try" +
|
"catch|extends|int|short|try|" +
|
||||||
"char|final|interface|static|void" +
|
"char|final|interface|static|void|" +
|
||||||
"class|finally|long|strictfp|volatile|" +
|
"class|finally|long|strictfp|volatile|" +
|
||||||
"const|float|native|super|while").split("|")
|
"const|float|native|super|while").split("|")
|
||||||
);
|
);
|
||||||
|
|
@ -27,7 +27,36 @@ var JavaHighlightRules = function() {
|
||||||
("null|Infinity|NaN|undefined").split("|")
|
("null|Infinity|NaN|undefined").split("|")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
var langClasses = lang.arrayToMap(
|
||||||
|
("AbstractMethodError|AssertionError|ClassCircularityError|"+
|
||||||
|
"ClassFormatError|Deprecated|EnumConstantNotPresentException|"+
|
||||||
|
"ExceptionInInitializerError|IllegalAccessError|"+
|
||||||
|
"IllegalThreadStateException|InstantiationError|InternalError|"+
|
||||||
|
"NegativeArraySizeException|NoSuchFieldError|Override|Process|"+
|
||||||
|
"ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+
|
||||||
|
"SuppressWarnings|TypeNotPresentException|UnknownError|"+
|
||||||
|
"UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+
|
||||||
|
"InstantiationException|IndexOutOfBoundsException|"+
|
||||||
|
"ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+
|
||||||
|
"NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+
|
||||||
|
"SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+
|
||||||
|
"InterruptedException|NoSuchMethodException|IllegalAccessException|"+
|
||||||
|
"UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+
|
||||||
|
"Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+
|
||||||
|
"NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+
|
||||||
|
"NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+
|
||||||
|
"Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+
|
||||||
|
"Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+
|
||||||
|
"StackOverflowError|OutOfMemoryError|VirtualMachineError|"+
|
||||||
|
"ArrayStoreException|ClassCastException|LinkageError|"+
|
||||||
|
"NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+
|
||||||
|
"Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+
|
||||||
|
"Cloneable|Class|CharSequence|Comparable|String|Object").split("|")
|
||||||
|
);
|
||||||
|
|
||||||
|
var importClasses = lang.arrayToMap(
|
||||||
|
("").split("|")
|
||||||
|
);
|
||||||
// regexp must not have capturing parentheses. Use (?:) instead.
|
// regexp must not have capturing parentheses. Use (?:) instead.
|
||||||
// regexps are ordered -> the first match is used
|
// regexps are ordered -> the first match is used
|
||||||
|
|
||||||
|
|
@ -70,6 +99,10 @@ var JavaHighlightRules = function() {
|
||||||
return "variable.language";
|
return "variable.language";
|
||||||
else if (keywords.hasOwnProperty(value))
|
else if (keywords.hasOwnProperty(value))
|
||||||
return "keyword";
|
return "keyword";
|
||||||
|
else if (langClasses.hasOwnProperty(value))
|
||||||
|
return "support.function";
|
||||||
|
else if (importClasses.hasOwnProperty(value))
|
||||||
|
return "support.function";
|
||||||
else if (buildinConstants.hasOwnProperty(value))
|
else if (buildinConstants.hasOwnProperty(value))
|
||||||
return "constant.language";
|
return "constant.language";
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -192,6 +192,10 @@ var VirtualRenderer = function(container, theme) {
|
||||||
this.$loop.schedule(this.CHANGE_FULL);
|
this.$loop.schedule(this.CHANGE_FULL);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.updateFontSize = function() {
|
||||||
|
this.$textLayer.checkForSizeChanges();
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Triggers resize of the editor
|
* Triggers resize of the editor
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue