Merge pull request +14658 from c9/ide-gutter-options

add showLineNumbers option
pull/240/merge
Harutyun Amirjanyan 2016-08-11 11:53:16 +04:00 zatwierdzone przez GitHub
commit 8bdc4f1119
3 zmienionych plików z 119 dodań i 21 usunięć

Wyświetl plik

@ -58,7 +58,7 @@
"c9" "c9"
], ],
"c9plugins": { "c9plugins": {
"c9.ide.language": "#0426ee345b", "c9.ide.language": "#f55c832376",
"c9.ide.language.core": "#bfb5dd2acc", "c9.ide.language.core": "#bfb5dd2acc",
"c9.ide.language.css": "#46ad561506", "c9.ide.language.css": "#46ad561506",
"c9.ide.language.generic": "#b47cbe58f9", "c9.ide.language.generic": "#b47cbe58f9",
@ -71,7 +71,7 @@
"c9.ide.language.javascript.infer": "#b9c2e4bdb8", "c9.ide.language.javascript.infer": "#b9c2e4bdb8",
"c9.ide.language.jsonalyzer": "#a0549e14ff", "c9.ide.language.jsonalyzer": "#a0549e14ff",
"c9.ide.language.codeintel": "#4e0a272229", "c9.ide.language.codeintel": "#4e0a272229",
"c9.ide.collab": "#d149eae786", "c9.ide.collab": "#39fc27d13f",
"c9.ide.local": "#9169fec157", "c9.ide.local": "#9169fec157",
"c9.ide.find": "#e632ecf4be", "c9.ide.find": "#e632ecf4be",
"c9.ide.find.infiles": "#ad9ff74638", "c9.ide.find.infiles": "#ad9ff74638",

Wyświetl plik

@ -241,32 +241,33 @@ define(function(require, exports, module) {
["newLineMode", "unix", STRING, "newlinemode", 1], ["newLineMode", "unix", STRING, "newlinemode", 1],
// Per document // Per document
["tabSize", "4", NUMBER, "tabsize", 1], ["tabSize", "4", NUMBER, "tabsize", 1],
["useSoftTabs", "true", BOOL, "softtabs", 1], ["useSoftTabs", true, BOOL, "softtabs", 1],
["guessTabSize", "true", BOOL, "guesstabsize", 1], ["guessTabSize", true, BOOL, "guesstabsize", 1],
["useWrapMode", "false", BOOL, "wrapmode"], ["useWrapMode", false, BOOL, "wrapmode"],
["wrapToView", "true", BOOL, "wrapmodeViewport"], ["wrapToView", true, BOOL, "wrapmodeViewport"],
// Ace // Ace
["fontSize", "12", NUMBER, "fontsize"], ["fontSize", "12", NUMBER, "fontsize"],
["fontFamily", font, STRING, "fontfamily"], ["fontFamily", font, STRING, "fontfamily"],
["antialiasedfonts", "false", BOOL], ["antialiasedfonts", false, BOOL],
["overwrite", "false", BOOL, "overwrite"], ["overwrite", false, BOOL, "overwrite"],
["selectionStyle", "line", STRING, "selectstyle"], ["selectionStyle", "line", STRING, "selectstyle"],
["cursorStyle", "ace", STRING, "cursorstyle"], ["cursorStyle", "ace", STRING, "cursorstyle"],
["highlightActiveLine", "true", BOOL, "activeline"], ["highlightActiveLine", true, BOOL, "activeline"],
["highlightGutterLine", "true", BOOL, "gutterline"], ["highlightGutterLine", true, BOOL, "gutterline"],
["showInvisibles", "false", BOOL, "showinvisibles"], ["showInvisibles", false, BOOL, "showinvisibles"],
["showPrintMargin", "true", BOOL, "showprintmargin"], ["showPrintMargin", true, BOOL, "showprintmargin"],
["displayIndentGuides", "true", BOOL, "showindentguides"], ["displayIndentGuides", true, BOOL, "showindentguides"],
["printMarginColumn", "80", NUMBER, "printmargincolumn"], ["printMarginColumn", "80", NUMBER, "printmargincolumn"],
["behavioursEnabled", "true", BOOL, "behaviors"], ["behavioursEnabled", true, BOOL, "behaviors"],
["wrapBehavioursEnabled", "false", BOOL, "wrapbehaviors"], ["wrapBehavioursEnabled", false, BOOL, "wrapbehaviors"],
["scrollSpeed", "2", NUMBER, "scrollspeed"], ["scrollSpeed", "2", NUMBER, "scrollspeed"],
["showGutter", "true", BOOL, "gutter"], ["showGutter", true, BOOL, "gutter"],
["showFoldWidgets", "true", BOOL, "folding"], ["showLineNumbers", true, STRING],
["fadeFoldWidgets", "true", BOOL, "fadefoldwidgets"], ["showFoldWidgets", true, BOOL, "folding"],
["highlightSelectedWord", "true", BOOL, "highlightselectedword"], ["fadeFoldWidgets", true, BOOL, "fadefoldwidgets"],
["animatedScroll", "true", BOOL, "animatedscroll"], ["highlightSelectedWord", true, BOOL, "highlightselectedword"],
["animatedScroll", true, BOOL, "animatedscroll"],
["scrollPastEnd", "0.5", NUMBER], ["scrollPastEnd", "0.5", NUMBER],
["mergeUndoDeltas", "off", STRING], ["mergeUndoDeltas", "off", STRING],
["theme", defaultThemes[skin], STRING, "theme"] ["theme", defaultThemes[skin], STRING, "theme"]
@ -589,7 +590,32 @@ define(function(require, exports, module) {
] ]
}, handle); }, handle);
mnuGutter = new Menu({ id: "menuGutter" }, handle); mnuGutter = new Menu({
id: "menuGutter",
items: [
new Divider({ position: 1000 }, handle),
new MenuItem({
position: 1000,
caption: "Gutter Options",
submenu: new Menu({
items: [
new MenuItem({
position: 10,
caption: "Show Line Numbers",
type: "check",
checked: "user/ace/@showLineNumbers"
}, handle),
new MenuItem({
position: 10,
caption: "Show Fold Widgets",
type: "check",
checked: "user/ace/@showFoldWidgets"
}, handle),
]
})
}, handle),
]
}, handle);
mnuGutter.on("show", function(e) { mnuGutter.on("show", function(e) {
var ace = tabs.focussedTab.editor.ace; var ace = tabs.focussedTab.editor.ace;
var region = ace.renderer.$gutterLayer.getRegion(e); var region = ace.renderer.$gutterLayer.getRegion(e);
@ -825,6 +851,17 @@ define(function(require, exports, module) {
position: 6000, position: 6000,
path: "user/ace/@showGutter" path: "user/ace/@showGutter"
}, },
"Show Line Numbers" : {
type: "dropdown",
width: 150,
path: "user/ace/@showLineNumbers",
items: [
{ caption : "Normal", value : true },
{ caption : "Relative", value : "relative" },
{ caption : "None", value : false }
],
position: 6250
},
"Show Indent Guides" : { "Show Indent Guides" : {
type: "checkbox", type: "checkbox",
position: 6500, position: 6500,
@ -1531,6 +1568,41 @@ define(function(require, exports, module) {
return s; return s;
} }
/***** Gutter Renderers *****/
var relativeNumbers = {
getText: function(session, row) {
return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? "\xb7" : ""))) + "";
},
getWidth: function(session, lastLineNumber, config) {
return session.getLength().toString().length * config.characterWidth;
},
update: function(e, editor) {
editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);
},
attach: function(editor) {
editor.renderer.$gutterLayer.$renderer = this;
editor.on("changeSelection", this.update);
},
detach: function(editor) {
editor.renderer.$gutterLayer.$renderer = null;
editor.off("changeSelection", this.update);
}
};
var noNumbers = {
getText: function(session, row) {
return "";
},
getWidth: function(session, lastLineNumber, config) {
return "";
},
attach: function(editor) {
},
detach: function(editor) {
},
};
/** /**
* The ace handle, responsible for events that involve all ace * The ace handle, responsible for events that involve all ace
* instances. This is the object you get when you request the ace * instances. This is the object you get when you request the ace
@ -2148,6 +2220,23 @@ define(function(require, exports, module) {
if (session) if (session)
session.$guessTabSize = false; session.$guessTabSize = false;
break; break;
case "showLineNumbers":
var renderer = ace.renderer;
var gutterRenderer = renderer.$gutterLayer.$renderer;
if (gutterRenderer && gutterRenderer.detach)
gutterRenderer.detach(ace);
if (value == "relative")
gutterRenderer = relativeNumbers;
else if (value)
gutterRenderer = null;
else
gutterRenderer = noNumbers;
dom.setCssClass(renderer.$gutter, "ace_gutter-compact", !value);
renderer.$gutterLayer.$renderer = gutterRenderer;
if (gutterRenderer && gutterRenderer.attach)
gutterRenderer.attach(ace);
renderer.$loop.schedule(renderer.CHANGE_GUTTER);
return;
} }
if (session && docLut[name]) // this can be called for session different than current ace session if (session && docLut[name]) // this can be called for session different than current ace session

Wyświetl plik

@ -26,6 +26,15 @@
z-index : -1; z-index : -1;
} }
.ace_gutter-compact:not(.ace_folding-enabled) > .ace_gutter-layer > .ace_gutter-cell {
padding-left: 15px!important;
padding-right: 5px!important;
}
.ace_gutter-compact.ace_folding-enabled > .ace_gutter-layer > .ace_gutter-cell {
padding-left: 16px!important;
padding-right: 12px!important;
}
.dark .ace_gutter .ace_gutter_active_line { .dark .ace_gutter .ace_gutter_active_line {
background-color: rgba(255, 255, 255, 0.07); background-color: rgba(255, 255, 255, 0.07);
} }