Przeglądaj źródła

Merge pull request #829 from herby/helios-css

Helios and legacy IDE theming customizable
Nicolas Petton 11 lat temu
rodzic
commit
5efa6158a0
6 zmienionych plików z 286 dodań i 291 usunięć
  1. 190 192
      css/helios.css
  2. 66 79
      css/helios.less
  3. 25 15
      js/Helios-Workspace.js
  4. 2 2
      js/IDE.js
  5. 2 2
      st/Helios-Workspace.st
  6. 1 1
      st/IDE.st

+ 190 - 192
css/helios.css

@@ -1,8 +1,3 @@
-body {
-  font-size: 11px;
-  font-family: "Lucida Grande", helvetica, arial, sans;
-  background: #eee;
-}
 .clearfix:after {
   content: ".";
   display: block;
@@ -20,70 +15,73 @@ html[xmlns] .clearfix {
 * html .clearfix {
   height: 1%;
 }
-#helios a {
+.cm-s-helios.CodeMirror {
+  font-family: Menlo, Monaco, Consolas, Inconsolata, "Lucida Console", Courier, monospace;
+  line-height: 16px;
+  font-size: 13px;
+}
+.cm-s-helios .CodeMirror-gutter.stops {
+  width: 20px;
+}
+.cm-s-helios .highlighted.CodeMirror-linebackground {
+  background-color: #ffffaa;
+}
+.cm-s-helios .CodeMirror-gutter-elt .stop {
+  width: 16px;
+  height: 16px;
+  background: url('../images/arrowRight.png');
+  margin-left: 2px;
+}
+body[id="helios"] {
+  font-size: 11px;
+  font-family: "Lucida Grande", "Segoe UI", helvetica, arial, sans;
+  background: #eee;
+}
+body[id="helios"] a {
   cursor: pointer;
 }
-#helios i {
+body[id="helios"] i {
   opacity: 1;
 }
-#helios [class^="icon-"],
-#helios [class*=" icon-"] {
+body[id="helios"] [class^="icon-"],
+body[id="helios"] [class*=" icon-"] {
   margin-top: 0;
 }
-#helios .CodeMirror {
+body[id="helios"] .CodeMirror {
   position: absolute;
-  overflow: hidden;
   height: 100%;
   width: 100%;
 }
-#helios .CodeMirror-hints {
+body[id="helios"] .CodeMirror-hints {
   border-radius: 0;
-  font-family: Menlo, Monaco, "Lucida Console", Courier, monospace;
+  font-family: "Lucida Grande", "Segoe UI", helvetica, arial, sans;
   font-size: 11px;
   line-height: 1em;
   padding: 0;
   max-height: 120px;
 }
-#helios .CodeMirror-hint {
+body[id="helios"] .CodeMirror-hint {
   border-radius: 0;
   padding: 0 10px;
 }
-#helios .CodeMirror pre,
-#helios .CodeMirror .CodeMirror-gutter-elt {
-  font-family: Menlo, Monaco, "Lucida Console", "Ubuntu Mono", Courier, monospace;
-  line-height: 16px;
-  font-size: 13px;
-}
-#helios .CodeMirror-gutter.stops {
-  width: 20px;
-}
-#helios .CodeMirror .highlighted.CodeMirror-linebackground {
-  background-color: #ffffaa;
-}
-#helios .CodeMirror .CodeMirror-gutter-elt .stop {
-  width: 16px;
-  height: 16px;
-  background: url('../images/arrowRight.png');
-  margin-left: 2px;
-}
-#helios .state {
+body[id="helios"] .state {
   position: absolute;
   right: 15px;
   top: 10px;
   width: 16px;
   height: 16px;
 }
-#helios .state.modified {
+body[id="helios"] .state.modified {
   background: transparent url('../images/modified.png') 50% 50% no-repeat;
 }
-#helios .editor {
+body[id="helios"] .editor {
   position: absolute;
   top: 0;
   bottom: 23px;
   left: 0;
   right: 0;
 }
-#helios .buttons_bar {
+body[id="helios"] .buttons_bar {
   position: absolute;
   bottom: 0;
   right: 0;
@@ -95,29 +93,29 @@ html[xmlns] .clearfix {
   border-top: 1px solid #999;
   text-align: right;
 }
-#helios .buttons_bar .button {
+body[id="helios"] .buttons_bar .button {
   height: 17px;
   font-size: 12px;
   min-width: 0;
 }
-#helios .btn,
-#helios .btn-group > .btn,
-#helios .btn-group > .dropdown-menu {
+body[id="helios"] .btn,
+body[id="helios"] .btn-group > .btn,
+body[id="helios"] .btn-group > .dropdown-menu {
   padding: 2px 8px;
 }
-#helios .navbar-fixed-top {
+body[id="helios"] .navbar-fixed-top {
   font-size: 11px;
   line-height: 16px;
 }
-#helios .navbar-fixed-top a span,
-#helios .dialog .nav a span {
+body[id="helios"] .navbar-fixed-top a span,
+body[id="helios"] .dialog .nav a span {
   padding: 1px;
   padding-left: 18px;
   background-position: center left;
   background-repeat: no-repeat;
   background-position: 0px -1px;
 }
-#helios .navbar-fixed-top i.close {
+body[id="helios"] .navbar-fixed-top i.close {
   width: 14px;
   height: 16px;
   margin-left: 4px;
@@ -126,31 +124,31 @@ html[xmlns] .clearfix {
   background-position: center left;
   margin-top: 2px;
 }
-#helios .navbar-fixed-top a span.references,
-#helios .dialog .nav a span.references {
+body[id="helios"] .navbar-fixed-top a span.references,
+body[id="helios"] .dialog .nav a span.references {
   background-image: url('../images/references.png');
 }
-#helios .navbar-fixed-top a span.browser,
-#helios .dialog .nav a span.browser {
+body[id="helios"] .navbar-fixed-top a span.browser,
+body[id="helios"] .dialog .nav a span.browser {
   background-image: url('../images/browser.png');
 }
-#helios .navbar-fixed-top a span.sunit,
-#helios .dialog .nav a span.sunit {
+body[id="helios"] .navbar-fixed-top a span.sunit,
+body[id="helios"] .dialog .nav a span.sunit {
   background-image: url('../images/sunit.png');
 }
-#helios .navbar-fixed-top a span.workspace,
-#helios .dialog .nav a span.workspace {
+body[id="helios"] .navbar-fixed-top a span.workspace,
+body[id="helios"] .dialog .nav a span.workspace {
   background-image: url('../images/workspace.png');
 }
-#helios .navbar-fixed-top a span.debugger,
-#helios .dialog .nav a span.debugger {
+body[id="helios"] .navbar-fixed-top a span.debugger,
+body[id="helios"] .dialog .nav a span.debugger {
   background-image: url('../images/debugger.png');
 }
-#helios .navbar-fixed-top a span.inspector,
-#helios .dialog .nav a span.inspector {
+body[id="helios"] .navbar-fixed-top a span.inspector,
+body[id="helios"] .dialog .nav a span.inspector {
   background-image: url('../images/inspector.png');
 }
-#helios .navbar-fixed-top .navbar-inner {
+body[id="helios"] .navbar-fixed-top .navbar-inner {
   min-height: 20px;
   background-color: #dbdbdb;
   border-bottom: 1px solid #666;
@@ -160,22 +158,22 @@ html[xmlns] .clearfix {
   background-image: -owebkit-linear-gradient(top, #dfdfdf, #d0d0d0);
   box-shadow: 0 0 0;
 }
-#helios .navbar .nav > li {
+body[id="helios"] .navbar .nav > li {
   line-height: 16px;
 }
-#helios .navbar .nav > li > a {
+body[id="helios"] .navbar .nav > li > a {
   line-height: 22px;
   padding: 0px 8px;
   font-size: 11px;
   color: #444;
   text-shadow: 0 1px 0 #ddd;
 }
-#helios .nav > li > a:hover {
+body[id="helios"] .nav > li > a:hover {
   background: transparent;
 }
-#helios .navbar .nav > .active > a,
-#helios .navbar .nav > .active > a:hover,
-#helios .navbar .nav > .active > a:focus {
+body[id="helios"] .navbar .nav > .active > a,
+body[id="helios"] .navbar .nav > .active > a:hover,
+body[id="helios"] .navbar .nav > .active > a:focus {
   background-color: #bababa;
   background-image: linear-gradient(left, #777777 0%, #bababa 2px, transparent 2px), linear-gradient(right, #777777 0%, #bababa 2px, transparent 2px);
   background-image: -webkit-linear-gradient(left, #777777 0%, #bababa 2px, transparent 2px), -webkit-linear-gradient(right, #777777 0%, #bababa 2px, transparent 2px);
@@ -184,16 +182,16 @@ html[xmlns] .clearfix {
   text-shadow: #ddd 0px 1px 0px;
   color: #222;
 }
-#helios .navbar-fixed-top i {
+body[id="helios"] .navbar-fixed-top i {
   opacity: 0.4;
   margin-right: 5px;
   height: 12px;
   margin-top: 0;
 }
-#helios .navbar-fixed-top .active i {
+body[id="helios"] .navbar-fixed-top .active i {
   opacity: 0.6;
 }
-#helios .nav-pills.nav-stacked > li > a {
+body[id="helios"] .nav-pills.nav-stacked > li > a {
   border-radius: 0;
   -webkit-border-radius: 0;
   -moz-border-radius: 0;
@@ -203,56 +201,56 @@ html[xmlns] .clearfix {
   color: #111;
   white-space: nowrap;
 }
-#helios [class^="icon-"],
-#helios [class*=" icon-"] {
+body[id="helios"] [class^="icon-"],
+body[id="helios"] [class*=" icon-"] {
   margin-right: 2px;
 }
-#helios .dropdown-menu {
+body[id="helios"] .dropdown-menu {
   border-radius: 0;
   padding: 0;
   margin: 3px;
 }
-#helios .nav-pills > .active > a {
+body[id="helios"] .nav-pills > .active > a {
   background-color: #ddd;
   color: #fff;
   text-shadow: 0 0 0;
 }
-#helios .focused .nav-pills {
+body[id="helios"] .focused .nav-pills {
   background-color: #f3f7fb;
 }
-#helios .focused .nav-pills > .active > a,
-#helios .nav-pills > .active > a:hover,
-#helios .dropdown-menu li > a:hover,
-#helios .dropdown-menu li > a:focus,
-#helios .dropdown-submenu:hover > a,
-#helios .dropdown-menu .active > a,
-#helios .dropdown-menu .active > a:hover,
-#helios .CodeMirror-hint-active {
+body[id="helios"] .focused .nav-pills > .active > a,
+body[id="helios"] .nav-pills > .active > a:hover,
+body[id="helios"] .dropdown-menu li > a:hover,
+body[id="helios"] .dropdown-menu li > a:focus,
+body[id="helios"] .dropdown-submenu:hover > a,
+body[id="helios"] .dropdown-menu .active > a,
+body[id="helios"] .dropdown-menu .active > a:hover,
+body[id="helios"] .CodeMirror-hint-active {
   background: rgba(95, 159, 228, 0.62);
   color: #fff;
   text-shadow: 0 0 0;
 }
-#helios .tool_container {
+body[id="helios"] .tool_container {
   position: absolute;
   top: 23px;
   bottom: 0;
   left: 0;
   right: 0;
 }
-#helios .transcript textarea {
+body[id="helios"] .transcript textarea {
   width: 100%;
   height: 100%;
   margin: 0;
   padding: 0;
   border: 0;
 }
-#helios .tool_container .panes {
+body[id="helios"] .tool_container .panes {
   position: relative;
   height: 100%;
   width: 100%;
   overflow: hidden;
 }
-#helios .tool_container .panes .pane {
+body[id="helios"] .tool_container .panes .pane {
   position: absolute;
   overflow: auto;
   top: 0;
@@ -261,44 +259,44 @@ html[xmlns] .clearfix {
   bottom: 0;
   background: #fefefe;
 }
-#helios .tool_container .multi_pane {
+body[id="helios"] .tool_container .multi_pane {
   position: relative;
   height: 100%;
   width: auto;
   overflow-x: auto;
 }
-#helios .tool_container .multi_pane .pane {
+body[id="helios"] .tool_container .multi_pane .pane {
   height: 100%;
   max-width: 300px;
   border-right: 1px solid #888;
 }
-#helios .tool_container .panes .pane > div {
+body[id="helios"] .tool_container .panes .pane > div {
   height: 100%;
   position: relative;
 }
-#helios .tool_container .panes.horizontal > .pane {
+body[id="helios"] .tool_container .panes.horizontal > .pane {
   min-height: 50px;
 }
-#helios .tool_container .panes.horizontal > .pane {
+body[id="helios"] .tool_container .panes.horizontal > .pane {
   top: 50%;
 }
-#helios .tool_container .panes.horizontal > .pane:first-child {
+body[id="helios"] .tool_container .panes.horizontal > .pane:first-child {
   top: 0;
   bottom: 50%;
 }
-#helios .tool_container .panes.vertical > .pane {
+body[id="helios"] .tool_container .panes.vertical > .pane {
   left: 50%;
 }
-#helios .tool_container .panes.vertical > .pane:first-child {
+body[id="helios"] .tool_container .panes.vertical > .pane:first-child {
   left: 0;
   right: 50%;
 }
-#helios .tool_container .splitter {
+body[id="helios"] .tool_container .splitter {
   position: absolute;
   border-width: 0;
   z-index: 10;
 }
-#helios .tool_container .splitter.vertical {
+body[id="helios"] .tool_container .splitter.vertical {
   width: 5px;
   left: 50%;
   margin-left: -1px;
@@ -307,7 +305,7 @@ html[xmlns] .clearfix {
   float: left;
   cursor: ew-resize;
 }
-#helios .tool_container .splitter.horizontal {
+body[id="helios"] .tool_container .splitter.horizontal {
   top: 50%;
   height: 5px;
   margin-top: -1px;
@@ -315,7 +313,7 @@ html[xmlns] .clearfix {
   border-top: 1px solid #888;
   cursor: ns-resize;
 }
-#helios .tool_container .panes .pane .nav-pills {
+body[id="helios"] .tool_container .panes .pane .nav-pills {
   position: absolute;
   overflow-y: auto;
   top: 17px;
@@ -323,7 +321,7 @@ html[xmlns] .clearfix {
   width: 100%;
   margin: 0;
 }
-#helios .tool_container .pane .nav-pills i {
+body[id="helios"] .tool_container .pane .nav-pills i {
   display: inline-block;
   width: 16px;
   height: 16px;
@@ -333,58 +331,58 @@ html[xmlns] .clearfix {
   line-height: 14px;
   vertical-align: text-top;
 }
-#helios .tool_container .pane .nav-pills i.announcement {
+body[id="helios"] .tool_container .pane .nav-pills i.announcement {
   background-image: url('../images/announcement.png');
 }
-#helios .tool_container .pane .nav-pills i.class {
+body[id="helios"] .tool_container .pane .nav-pills i.class {
   background-image: url('../images/class.png');
 }
-#helios .tool_container .pane .nav-pills i.collection {
+body[id="helios"] .tool_container .pane .nav-pills i.collection {
   background-image: url('../images/collection.png');
 }
-#helios .tool_container .pane .nav-pills i.test {
+body[id="helios"] .tool_container .pane .nav-pills i.test {
   background-image: url('../images/test.png');
 }
-#helios .tool_container .pane .nav-pills i.exception {
+body[id="helios"] .tool_container .pane .nav-pills i.exception {
   background-image: url('../images/exception.png');
 }
-#helios .tool_container .pane .nav-pills i.widget {
+body[id="helios"] .tool_container .pane .nav-pills i.widget {
   background-image: url('../images/widget.png');
 }
-#helios .tool_container .pane .nav-pills i.magnitude {
+body[id="helios"] .tool_container .pane .nav-pills i.magnitude {
   background-image: url('../images/magnitude.png');
 }
-#helios .tool_container .pane .nav-pills i.package {
+body[id="helios"] .tool_container .pane .nav-pills i.package {
   background-image: url('../images/package.png');
 }
-#helios .tool_container .pane .nav-pills i.private {
+body[id="helios"] .tool_container .pane .nav-pills i.private {
   background-image: url('../images/private.png');
 }
-#helios .tool_container .pane .nav-pills i.extension {
+body[id="helios"] .tool_container .pane .nav-pills i.extension {
   background-image: url('../images/extension.png');
 }
-#helios .tool_container .pane .nav-pills i.initialization {
+body[id="helios"] .tool_container .pane .nav-pills i.initialization {
   background-image: url('../images/initialization.png');
 }
-#helios .tool_container .pane .nav-pills i.package {
+body[id="helios"] .tool_container .pane .nav-pills i.package {
   background-image: url('../images/package.png');
 }
-#helios .tool_container .pane .nav-pills i.override {
+body[id="helios"] .tool_container .pane .nav-pills i.override {
   background-image: url('../images/override.png ');
 }
-#helios .tool_container .pane .nav-pills i.overridden {
+body[id="helios"] .tool_container .pane .nav-pills i.overridden {
   background-image: url('../images/overridden.png');
 }
-#helios .tool_container .pane .nav-pills i.override-overridden {
+body[id="helios"] .tool_container .pane .nav-pills i.override-overridden {
   background-image: url('../images/override-overridden.png');
 }
-#helios .tool_container .pane .nav-pills i.warning {
+body[id="helios"] .tool_container .pane .nav-pills i.warning {
   background-image: url('../images/warning.gif');
 }
-#helios .tool_container .pane .nav-pills i.uncommented {
+body[id="helios"] .tool_container .pane .nav-pills i.uncommented {
   background-image: url('../images/uncommented.png');
 }
-#helios .tool_container .list-label {
+body[id="helios"] .tool_container .list-label {
   font-size: 11px;
   border-radius: 0;
   border-bottom: 1px solid #999;
@@ -402,32 +400,32 @@ html[xmlns] .clearfix {
   height: 15px;
   text-shadow: 0 1px 0 #eee;
 }
-#helios .tool_container .list-label .btn-group.cog {
+body[id="helios"] .tool_container .list-label .btn-group.cog {
   position: absolute;
   top: 0;
   right: 0;
   padding: 0;
   margin: 0;
 }
-#helios .tool_container .list-label .btn-group.open .dropdown-toggle {
+body[id="helios"] .tool_container .list-label .btn-group.open .dropdown-toggle {
   box-shadow: 0 0 0;
   border: 0;
 }
-#helios .tool_container .list-label .btn-group > .dropdown-menu {
+body[id="helios"] .tool_container .list-label .btn-group > .dropdown-menu {
   padding: 0;
   font-size: 11px;
 }
-#helios .tool_container .list-label .btn-group.cog i {
+body[id="helios"] .tool_container .list-label .btn-group.cog i {
   margin-top: 1px;
 }
-#helios .tool_container .list-label .cog .btn.dropdown-toggle {
+body[id="helios"] .tool_container .list-label .cog .btn.dropdown-toggle {
   padding: 0;
   margin: 0;
   line-height: 12px;
   border: 0;
   background: transparent;
 }
-#helios .tool_container .panes .pane .pane_actions {
+body[id="helios"] .tool_container .panes .pane .pane_actions {
   position: absolute;
   overflow: hidden;
   width: 100%;
@@ -436,8 +434,8 @@ html[xmlns] .clearfix {
   padding: 0;
   margin: 0;
 }
-#helios .tool_container .pane_actions,
-#helios .tool_container .buttons_bar {
+body[id="helios"] .tool_container .pane_actions,
+body[id="helios"] .tool_container .buttons_bar {
   background: #dadada;
   border-top: 1px solid #666;
   background-image: -webkit-linear-gradient(top, #dadada, #bdbdbd);
@@ -445,17 +443,17 @@ html[xmlns] .clearfix {
   background-image: -o-linear-gradient(top, #dadada, #bdbdbd);
   background-image: linear-gradient(top, #dadada, #bdbdbd);
 }
-#helios .tool_container .panes .pane .pane_actions .info {
+body[id="helios"] .tool_container .panes .pane .pane_actions .info {
   padding: 10px 5px 5px;
   font-weight: bold;
   color: #666;
   line-height: 20px;
 }
-#helios .tool_container .panes .pane .pane_actions .btn-group {
+body[id="helios"] .tool_container .panes .pane .pane_actions .btn-group {
   display: inline;
   margin-left: 5px;
 }
-#helios .tool_container .panes .pane .pane_actions label {
+body[id="helios"] .tool_container .panes .pane .pane_actions label {
   display: inline-block;
   padding-left: 30px;
   font-size: 11px;
@@ -464,13 +462,13 @@ html[xmlns] .clearfix {
   text-shadow: #ddd 0px 1px 0px;
   color: #222;
 }
-#helios .tool_container .panes .pane .pane_actions label input {
+body[id="helios"] .tool_container .panes .pane .pane_actions label input {
   float: none;
   vertical-align: top;
   margin-top: 2px;
   margin-right: 5px;
 }
-#helios .tool_container .panes .pane .pane_actions .btn {
+body[id="helios"] .tool_container .panes .pane .pane_actions .btn {
   background: transparent;
   border: 0;
   font-size: 11px;
@@ -482,13 +480,13 @@ html[xmlns] .clearfix {
   vertical-align: top;
   /* min-width: 50px; */
 }
-#helios .tool_container .panes .pane .pane_actions .btn:hover {
+body[id="helios"] .tool_container .panes .pane .pane_actions .btn:hover {
   background-color: #bbb;
 }
-#helios .tool_container .panes .pane .pane_actions .btn-group .btn:hover {
+body[id="helios"] .tool_container .panes .pane .pane_actions .btn-group .btn:hover {
   background-color: transparent;
 }
-#helios .tool_container .panes .pane .pane_actions .btn-group .btn.active {
+body[id="helios"] .tool_container .panes .pane .pane_actions .btn-group .btn.active {
   text-shadow: #ddd 0px 1px 0px;
   color: #222;
   background: #bbb;
@@ -497,11 +495,11 @@ html[xmlns] .clearfix {
   background-image: -moz-linear-gradient(left, #777777 0%, #bababa 2px, transparent 2px), -moz-linear-gradient(right, #777777 0%, #bababa 2px, transparent 2px);
   background-image: -o-linear-gradient(left, #777777 0%, #bababa 2px, transparent 2px), -o-linear-gradient(right, #777777 0%, #bababa 2px, transparent 2px);
 }
-#helios .tool_container .panes .pane .class_side .nav-pills {
+body[id="helios"] .tool_container .panes .pane .class_side .nav-pills {
   font-weight: bold;
   background: #ffffdd;
 }
-#helios .key_helper {
+body[id="helios"] .key_helper {
   z-index: 20;
   position: fixed;
   bottom: 0px;
@@ -515,13 +513,13 @@ html[xmlns] .clearfix {
   font-size: 11px;
   height: 22px;
 }
-#helios .key_helper .command {
+body[id="helios"] .key_helper .command {
   padding: 0 2px;
 }
-#helios .key_helper #binding-helper-main {
+body[id="helios"] .key_helper #binding-helper-main {
   display: inline;
 }
-#helios .key_helper .label {
+body[id="helios"] .key_helper .label {
   padding: 1px 4px;
   font-family: Menlo, Monaco, "Lucida Console", Courier, monospace;
   background: transparent;
@@ -529,11 +527,11 @@ html[xmlns] .clearfix {
   text-shadow: none;
   border: 0 none;
 }
-#helios .key_helper .action {
+body[id="helios"] .key_helper .action {
   padding: 0 5px;
   color: #666;
 }
-#helios .key_helper .selected {
+body[id="helios"] .key_helper .selected {
   background-image: linear-gradient(top, #cccccc, #aaaaaa);
   background-image: -moz-linear-gradient(top, #cccccc, #aaaaaa);
   background-image: -o-linear-gradient(top, #cccccc, #aaaaaa);
@@ -546,15 +544,15 @@ html[xmlns] .clearfix {
   display: inline-block;
   border-right: 1px solid #aaa;
 }
-#helios .key_helper .close {
+body[id="helios"] .key_helper .close {
   font-size: 14px;
   line-height: 26px;
   opacity: 0.6;
 }
-#helios .key_helper .close:hover {
+body[id="helios"] .key_helper .close:hover {
   opacity: 0.8;
 }
-#helios .key_helper input {
+body[id="helios"] .key_helper input {
   outline: none;
   font-size: 11px;
   padding: 2px 8px;
@@ -565,17 +563,17 @@ html[xmlns] .clearfix {
   margin: 2px 4px;
   line-height: 1em;
 }
-#helios .key_helper .error .help-inline,
-#helios .key_helper .error input {
+body[id="helios"] .key_helper .error .help-inline,
+body[id="helios"] .key_helper .error input {
   color: #B91010;
   font-weight: bold;
 }
-#helios .key_helper .typeahead.dropdown-menu {
+body[id="helios"] .key_helper .typeahead.dropdown-menu {
   position: fixed !important;
   top: auto !important;
   bottom: 30px !important;
 }
-#helios .key_helper #cog-helper {
+body[id="helios"] .key_helper #cog-helper {
   position: fixed;
   bottom: 2px;
   right: 2px;
@@ -587,10 +585,10 @@ html[xmlns] .clearfix {
   -o-transition: all .5s;
   -ms-transition: all .5s;
 }
-#helios .key_helper #cog-helper:hover {
+body[id="helios"] .key_helper #cog-helper:hover {
   opacity: 1;
 }
-#helios #helper {
+body[id="helios"] #helper {
   z-index: 300;
   top: 50%;
   position: absolute;
@@ -607,7 +605,7 @@ html[xmlns] .clearfix {
   background: rgba(0, 0, 0, 0.6);
   border-radius: 40px;
 }
-#helios #overlay {
+body[id="helios"] #overlay {
   z-index: 2000;
   background: transparent;
   position: fixed;
@@ -616,8 +614,8 @@ html[xmlns] .clearfix {
   right: 0;
   bottom: 0;
 }
-#helios .confirmation,
-#helios .dialog {
+body[id="helios"] .confirmation,
+body[id="helios"] .dialog {
   z-index: 2001;
   background: rgba(243, 243, 243, 0.9);
   background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 5px, transparent 6px);
@@ -636,71 +634,71 @@ html[xmlns] .clearfix {
   -moz-transition: top .5s;
   -o-transition: top .5s;
 }
-#helios .confirmation .hl_widget:focus,
-#helios .dialog .hl_widget:focus {
+body[id="helios"] .confirmation .hl_widget:focus,
+body[id="helios"] .dialog .hl_widget:focus {
   outline: 0 none;
 }
-#helios .confirmation .hl_widget .form-actions,
-#helios .dialog .hl_widget .form-actions {
+body[id="helios"] .confirmation .hl_widget .form-actions,
+body[id="helios"] .dialog .hl_widget .form-actions {
   padding: 0;
   border: 0;
 }
-#helios .confirmation .nav,
-#helios .dialog .nav {
+body[id="helios"] .confirmation .nav,
+body[id="helios"] .dialog .nav {
   border: 1px solid #999;
 }
-#helios .confirmation .nav span,
-#helios .dialog .nav span {
+body[id="helios"] .confirmation .nav span,
+body[id="helios"] .dialog .nav span {
   font-size: 11px;
   font-weight: normal;
 }
-#helios .confirmation .title,
-#helios .dialog .title {
+body[id="helios"] .confirmation .title,
+body[id="helios"] .dialog .title {
   font-size: 16px;
   margin-bottom: 15px;
 }
-#helios .confirmation .large,
-#helios .dialog .large {
+body[id="helios"] .confirmation .large,
+body[id="helios"] .dialog .large {
   width: 400px;
   margin-left: -220px;
 }
-#helios .confirmation .large textarea,
-#helios .dialog .large textarea {
+body[id="helios"] .confirmation .large textarea,
+body[id="helios"] .dialog .large textarea {
   width: 385px;
   height: 200px;
 }
-#helios .confirmation textarea,
-#helios .dialog textarea {
+body[id="helios"] .confirmation textarea,
+body[id="helios"] .dialog textarea {
   display: block;
   width: 235px;
 }
-#helios .confirmation .progress,
-#helios .dialog .progress {
+body[id="helios"] .confirmation .progress,
+body[id="helios"] .dialog .progress {
   height: 5px;
 }
-#helios .confirmation .progress .bar,
-#helios .dialog .progress .bar {
+body[id="helios"] .confirmation .progress .bar,
+body[id="helios"] .dialog .progress .bar {
   background-color: #e9eaf5;
   background-image: -webkit-linear-gradient(top, #b1bdd5, #8999b8);
   background-image: -moz-linear-gradient(top, #b1bdd5, #8999b8);
   background-image: -o-linear-gradient(top, #b1bdd5, #8999b8);
   background-image: linear-gradient(top, #b1bdd5, #8999b8);
 }
-#helios .confirmation span,
-#helios .dialog span {
+body[id="helios"] .confirmation span,
+body[id="helios"] .dialog span {
   font-size: 13px;
   font-weight: bold;
 }
-#helios .confirmation .buttons,
-#helios .dialog .buttons {
+body[id="helios"] .confirmation .buttons,
+body[id="helios"] .dialog .buttons {
   text-align: right;
   margin-top: 20px;
 }
-#helios .confirmation.active,
-#helios .dialog.active {
+body[id="helios"] .confirmation.active,
+body[id="helios"] .dialog.active {
   top: 0;
 }
-#helios .button {
+body[id="helios"] .button {
   border-radius: 3px !important;
   background: #ccc;
   border: 1px solid #9B9B9B;
@@ -714,7 +712,7 @@ html[xmlns] .clearfix {
   background: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.09) 0%, rgba(0, 0, 0, 0.02) 50%, rgba(0, 0, 0, 0.04) 50.5%, rgba(0, 0, 0, 0.04) 100%) #ffffff;
   font: 13px "Lucida Grande", Lucida, Verdana, sans-serif;
 }
-#helios .button.default {
+body[id="helios"] .button.default {
   border-top: 1px solid #535273;
   border: 1px solid #4F4D67;
   border-bottom: 1px solid #4B4B58;
@@ -724,65 +722,65 @@ html[xmlns] .clearfix {
   -webkit-box-shadow: 0 0 5px rgba(69, 113, 184, 0.44);
   box-shadow: 0 0 5px rgba(69, 113, 184, 0.44);
 }
-#helios .button:hover {
+body[id="helios"] .button:hover {
   cursor: pointer;
   border: 1px solid rgba(0, 0, 0, 0.6);
 }
-#helios .button:active {
+body[id="helios"] .button:active {
   -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5);
   -moz-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5);
   box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5);
 }
-#helios .button:focus {
+body[id="helios"] .button:focus {
   outline: 0;
   border-color: #08C;
   box-shadow: 0 0 5px #08C;
 }
-#helios .doc {
+body[id="helios"] .doc {
   background: white;
 }
-#helios .doc code .doc pre {
+body[id="helios"] .doc code .doc pre {
   font-size: 11px;
 }
-#helios .doc code {
+body[id="helios"] .doc code {
   padding: 1px 4px;
 }
-#helios .doc .head {
+body[id="helios"] .doc .head {
   background: #08C;
   padding: 10px;
   font-size: 22px;
   color: white;
 }
-#helios .doc .button {
+body[id="helios"] .doc .button {
   float: right;
 }
-#helios .doc .markdown,
-#helios .doc .inheritance {
+body[id="helios"] .doc .markdown,
+body[id="helios"] .doc .inheritance {
   padding: 10px;
 }
-#helios .doc h1 {
+body[id="helios"] .doc h1 {
   font-size: 22px;
   margin: 0 10px;
   border-bottom: 1px solid #666;
 }
-#helios .doc h2 {
+body[id="helios"] .doc h2 {
   font-size: 16px;
 }
-#helios .transcript_container .list-label {
+body[id="helios"] .transcript_container .list-label {
   height: 16px;
   position: absolute;
   top: 0;
   right: 0;
   left: 0;
 }
-#helios .transcript {
+body[id="helios"] .transcript {
   position: absolute;
   top: 17px;
   bottom: 0;
   left: 0;
   right: 0;
 }
-#helios .transcript textarea {
+body[id="helios"] .transcript textarea {
   width: 100%;
   height: 100%;
   margin: 0;

+ 66 - 79
css/helios.less

@@ -1,33 +1,53 @@
-body {
-    font-size: 11px;
-    font-family: "Lucida Grande", helvetica, arial, sans;
-    background: #eee;
-}
-
 .clearfix:after {
-    content: ".";
-    display: block;
-    clear: both;
-    visibility: hidden;
-    line-height: 0;
-    height: 0;
+	content: ".";
+	display: block;
+	clear: both;
+	visibility: hidden;
+	line-height: 0;
+	height: 0;
 }
 
 .clearfix {
-    display: inline-block;
+	display: inline-block;
 }
 
 html[xmlns] .clearfix {
-    display: block;
+	display: block;
 }
 
 * html .clearfix {
-    height: 1%;
+	height: 1%;
+}
+
+.cm-s-helios.CodeMirror {
+	font-family: Menlo, Monaco, Consolas, Inconsolata, "Lucida Console", Courier, monospace;
+	line-height: 16px;
+	font-size: 13px;
+}
+
+.cm-s-helios {
+	.CodeMirror-gutter.stops {
+		width: 20px;
+	}
+
+	.highlighted.CodeMirror-linebackground {
+		background-color: #ffffaa;
+	}
+
+	.CodeMirror-gutter-elt .stop {
+		width: 16px;
+		height: 16px;
+		background: url('../images/arrowRight.png');
+		margin-left: 2px;
+	}
 }
 
-#helios {
+body[id="helios"] {
+	font-size: 11px;
+	font-family: "Lucida Grande", "Segoe UI", helvetica, arial, sans;
+	background: #eee;
 
-    a {
+	a {
 		cursor: pointer;
 	}
 
@@ -41,14 +61,13 @@ html[xmlns] .clearfix {
 
 	.CodeMirror {
 		position: absolute;
-		overflow: hidden;
 		height: 100%;
 		width: 100%;
 	}
 
 	.CodeMirror-hints {
 		border-radius: 0;
-		font-family: Menlo, Monaco, "Lucida Console", Courier, monospace;
+		font-family: "Lucida Grande", "Segoe UI", helvetica, arial, sans;
 		font-size: 11px;
 		line-height: 1em;
 		padding: 0;
@@ -60,27 +79,6 @@ html[xmlns] .clearfix {
 		padding: 0 10px;
 	}
 
-	.CodeMirror pre, .CodeMirror .CodeMirror-gutter-elt {
-		font-family: Menlo, Monaco, "Lucida Console",  "Ubuntu Mono", Courier, monospace;
-		line-height: 16px;
-		font-size: 13px;
-	}
-
-	.CodeMirror-gutter.stops {
-		width: 20px;
-	}
-
-	.CodeMirror .highlighted.CodeMirror-linebackground {
-		background-color: #ffffaa;
-	}
-
-	.CodeMirror .CodeMirror-gutter-elt .stop {
-		width: 16px;
-		height: 16px;
-		background: url('../images/arrowRight.png');
-		margin-left: 2px;
-	}
-
 	.state {
 		position: absolute;
 		right: 15px;
@@ -175,7 +173,6 @@ html[xmlns] .clearfix {
 		}
 	}
 
-
 	.navbar-fixed-top .navbar-inner {
 		min-height: 20px;
 		background-color: #dbdbdb;
@@ -187,12 +184,10 @@ html[xmlns] .clearfix {
 		box-shadow: 0 0 0;
 	}
 
-
 	.navbar .nav > li {
 		line-height: 16px;
 	}
 
-
 	.navbar .nav > li > a {
 		line-height: 22px;
 		padding: 0px 8px;
@@ -205,15 +200,15 @@ html[xmlns] .clearfix {
 		background: transparent;
 	}
 
-	.navbar .nav > .active > a, 
-	.navbar .nav > .active > a:hover, 
+	.navbar .nav > .active > a,
+	.navbar .nav > .active > a:hover,
 	.navbar .nav > .active > a:focus {
 		background-color: #bababa;
 		background-image: linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
 		background-image: -webkit-linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), -webkit-linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
 		background-image: -moz-linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), -moz-linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
 		background-image: -o-linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), -o-linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
-		text-shadow: #ddd 0px 1px 0px; 
+		text-shadow: #ddd 0px 1px 0px;
 		color: #222;
 	}
 
@@ -259,12 +254,12 @@ html[xmlns] .clearfix {
 		background-color: #f3f7fb;
 	}
 
-	.focused .nav-pills > .active > a, 
+	.focused .nav-pills > .active > a,
 	.nav-pills > .active > a:hover,
-	.dropdown-menu li > a:hover, 
-	.dropdown-menu li > a:focus, 
+	.dropdown-menu li > a:hover,
+	.dropdown-menu li > a:focus,
 	.dropdown-submenu:hover > a,
-	.dropdown-menu .active > a, 
+	.dropdown-menu .active > a,
 	.dropdown-menu .active > a:hover,
 	.CodeMirror-hint-active {
 		background: rgba(95, 159, 228, 0.62);
@@ -272,7 +267,6 @@ html[xmlns] .clearfix {
 		text-shadow: 0 0 0;
 	}
 
-
 	.tool_container {
 		position: absolute;
 		top: 23px;
@@ -346,7 +340,6 @@ html[xmlns] .clearfix {
 		right: 50%;
 	}
 
-
 	.tool_container .splitter {
 		position: absolute;
 		border-width: 0;
@@ -372,8 +365,6 @@ html[xmlns] .clearfix {
 		cursor: ns-resize;
 	}
 
-
-
 	.tool_container .panes .pane .nav-pills {
 		position: absolute;
 		overflow-y: auto;
@@ -446,8 +437,6 @@ html[xmlns] .clearfix {
 		background-image: url('../images/uncommented.png');
 	}
 
-
-
 	.tool_container .list-label {
 		font-size: 11px;
 		border-radius: 0;
@@ -497,7 +486,6 @@ html[xmlns] .clearfix {
 		background: transparent;
 	}
 
-
 	.tool_container .panes .pane .pane_actions {
 		position: absolute;
 		overflow: hidden;
@@ -535,7 +523,7 @@ html[xmlns] .clearfix {
 		font-size: 11px;
 		line-height: 16px;
 		vertical-align: top;
-		text-shadow: #ddd 0px 1px 0px; 
+		text-shadow: #ddd 0px 1px 0px;
 		color: #222;
 
 	}
@@ -557,7 +545,7 @@ html[xmlns] .clearfix {
 		border-radius: 0;
 		box-shadow: 0 0 0;
 		vertical-align: top;
-	/* min-width: 50px; */
+		/* min-width: 50px; */
 	}
 
 	.tool_container .panes .pane .pane_actions .btn:hover {
@@ -569,7 +557,7 @@ html[xmlns] .clearfix {
 	}
 
 	.tool_container .panes .pane .pane_actions .btn-group .btn.active {
-		text-shadow: #ddd 0px 1px 0px; 
+		text-shadow: #ddd 0px 1px 0px;
 		color: #222;
 		background: #bbb;
 		background-image: linear-gradient(left, #777 0%, #bababa 2px, transparent 2px), linear-gradient(right, #777 0%, #bababa 2px, transparent 2px);
@@ -700,7 +688,7 @@ html[xmlns] .clearfix {
 		font-weight: bold;
 		text-shadow: 0 -1px 0 #111;
 		padding: 20px;
-		background: rgba(0,0,0, 0.6);
+		background: rgba(0, 0, 0, 0.6);
 		border-radius: 40px;
 	}
 
@@ -716,11 +704,11 @@ html[xmlns] .clearfix {
 
 	.confirmation, .dialog {
 		z-index: 2001;
-		background: rgba(243,243,243,0.9);
-		background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0) 5px, transparent 6px);
-		background-image: -moz-linear-gradient(top, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0) 5px, transparent 6px);
-		background-image: -o-linear-gradient(top, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0) 5px, transparent 6px);
-		background-image: linear-gradient(top, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0) 5px, transparent 6px);
+		background: rgba(243, 243, 243, 0.9);
+		background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 5px, transparent 6px);
+		background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 5px, transparent 6px);
+		background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 5px, transparent 6px);
+		background-image: linear-gradient(top, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 5px, transparent 6px);
 		padding: 20px;
 		width: 250px;
 		position: fixed;
@@ -734,7 +722,7 @@ html[xmlns] .clearfix {
 		-o-transition: top .5s;
 
 		.hl_widget {
-			
+
 			&:focus {
 				outline: 0 none;
 			}
@@ -812,37 +800,36 @@ html[xmlns] .clearfix {
 		text-align: center;
 		margin: 0;
 		margin-left: 10px;
-		background: -webkit-linear-gradient(bottom, rgba(0,0,0,.09) 0%, rgba(0,0,0, 0.02) 50%, rgba(0,0,0,.04) 50.5%, rgba(0,0,0,.04) 100%) #fff;
+		background: -webkit-linear-gradient(bottom, rgba(0, 0, 0, .09) 0%, rgba(0, 0, 0, 0.02) 50%, rgba(0, 0, 0, .04) 50.5%, rgba(0, 0, 0, .04) 100%) #fff;
 		font: 13px "Lucida Grande", Lucida, Verdana, sans-serif;
 	}
 
-	.button.default { 
+	.button.default {
 		border-top: 1px solid #535273;
 		border: 1px solid #4F4D67;
-		border-bottom: 1px solid #4B4B58;	 
-		background: -webkit-linear-gradient(bottom, rgba(255,255,255,.5) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255,255,255,.3) 50.5%, rgba(255,255,255,.45) 95%, rgba(255,255,255,.8) 100%) #b1bdd5;
-		background: -moz-linear-gradient(bottom, rgba(255,255,255,.5) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255,255,255,.3) 50.5%, rgba(255,255,255,.45) 95%, rgba(255,255,255,.8) 100%) #b1bdd5;
+		border-bottom: 1px solid #4B4B58;
+		background: -webkit-linear-gradient(bottom, rgba(255, 255, 255, .5) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, .3) 50.5%, rgba(255, 255, 255, .45) 95%, rgba(255, 255, 255, .8) 100%) #b1bdd5;
+		background: -moz-linear-gradient(bottom, rgba(255, 255, 255, .5) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, .3) 50.5%, rgba(255, 255, 255, .45) 95%, rgba(255, 255, 255, .8) 100%) #b1bdd5;
 		-moz-box-shadow: 0 0 3px rgba(69, 113, 184, 0.8);
 		-webkit-box-shadow: 0 0 5px rgba(69, 113, 184, 0.44);
 		box-shadow: 0 0 5px rgba(69, 113, 184, 0.44);
 	}
 
-
 	.button:hover {
 		cursor: pointer;
-		border: 1px solid rgba(0,0,0,.6);
+		border: 1px solid rgba(0, 0, 0, .6);
 	}
 
 	.button:active {
-		-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,.5);
-		-moz-box-shadow: inset 0 0 5px rgba(0,0,0,.5);
-		box-shadow: inset 0 0 5px rgba(0,0,0,.5);
+		-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, .5);
+		-moz-box-shadow: inset 0 0 5px rgba(0, 0, 0, .5);
+		box-shadow: inset 0 0 5px rgba(0, 0, 0, .5);
 	}
 
 	.button:focus {
 		outline: 0;
-	    border-color: #08C;
-	    box-shadow: 0 0 5px #08C;
+		border-color: #08C;
+		box-shadow: 0 0 5px #08C;
 	}
 
 	.doc {

+ 25 - 15
js/Helios-Workspace.js

@@ -390,35 +390,45 @@ selector: "editorOptions",
 protocol: 'accessing',
 fn: function (){
 var self=this;
+function $SmalltalkSettings(){return globals.SmalltalkSettings||(typeof SmalltalkSettings=="undefined"?nil:SmalltalkSettings)}
+function $HashedCollection(){return globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
 return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$1;
-$2="theme".__minus_gt("default");
+var $3,$2,$4,$5,$6,$7,$8,$9,$10,$11,$12,$1;
+$3=_st($SmalltalkSettings())._at_ifAbsent_("helios.codeMirrorTheme",(function(){
+return smalltalk.withContext(function($ctx2) {
+return "default helios";
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
+$ctx1.sendIdx["at:ifAbsent:"]=1;
+$2="theme".__minus_gt($3);
 $ctx1.sendIdx["->"]=1;
-$3="mode".__minus_gt("text/x-stsrc");
+$4="mode".__minus_gt("text/x-stsrc");
 $ctx1.sendIdx["->"]=2;
-$4="lineNumbers".__minus_gt(true);
+$5="lineNumbers".__minus_gt(true);
 $ctx1.sendIdx["->"]=3;
-$5="enterMode".__minus_gt("flat");
+$6="enterMode".__minus_gt("flat");
 $ctx1.sendIdx["->"]=4;
-$6="indentWithTabs".__minus_gt(true);
+$7="indentWithTabs".__minus_gt(true);
 $ctx1.sendIdx["->"]=5;
-$7="indentUnit".__minus_gt((4));
+$8="indentUnit".__minus_gt((4));
 $ctx1.sendIdx["->"]=6;
-$8="matchBrackets".__minus_gt(true);
+$9="matchBrackets".__minus_gt(true);
 $ctx1.sendIdx["->"]=7;
-$9="electricChars".__minus_gt(false);
+$10="electricChars".__minus_gt(false);
 $ctx1.sendIdx["->"]=8;
-$10="keyMap".__minus_gt("Amber");
+$11="keyMap".__minus_gt("Amber");
 $ctx1.sendIdx["->"]=9;
-$11="extraKeys".__minus_gt(globals.HashedCollection._from_(["Shift-Space".__minus_gt("autocomplete")]));
+$12="extraKeys".__minus_gt(_st($HashedCollection())._with_(_st(_st($SmalltalkSettings())._at_ifAbsent_("helios.completionKey",(function(){
+return smalltalk.withContext(function($ctx2) {
+return "Shift-Space";
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))).__minus_gt("autocomplete")));
 $ctx1.sendIdx["->"]=10;
-$1=globals.HashedCollection._from_([$2,$3,$4,$5,$6,$7,$8,$9,$10,$11]);
+$1=globals.HashedCollection._from_([$2,$4,$5,$6,$7,$8,$9,$10,$11,$12]);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"editorOptions",{},globals.HLCodeWidget)})},
 args: [],
-source: "editorOptions\x0a\x09^ #{\x0a\x09\x09'theme' -> 'default'.\x0a\x09\x09'mode' -> 'text/x-stsrc'.\x0a        'lineNumbers' -> true.\x0a        'enterMode' -> 'flat'.\x0a        'indentWithTabs' -> true.\x0a\x09\x09'indentUnit' -> 4.\x0a        'matchBrackets' -> true.\x0a        'electricChars' -> false.\x0a\x09\x09'keyMap' -> 'Amber'.\x0a\x09\x09'extraKeys' -> #{'Shift-Space' -> 'autocomplete'}\x0a\x09}",
-messageSends: ["->"],
-referencedClasses: []
+source: "editorOptions\x0a\x09^ #{\x0a\x09\x09'theme' -> (SmalltalkSettings at: 'helios.codeMirrorTheme' ifAbsent: [ 'default helios' ]).\x0a\x09\x09'mode' -> 'text/x-stsrc'.\x0a        'lineNumbers' -> true.\x0a        'enterMode' -> 'flat'.\x0a        'indentWithTabs' -> true.\x0a\x09\x09'indentUnit' -> 4.\x0a        'matchBrackets' -> true.\x0a        'electricChars' -> false.\x0a\x09\x09'keyMap' -> 'Amber'.\x0a\x09\x09'extraKeys' -> (HashedCollection with: (SmalltalkSettings at: 'helios.completionKey' ifAbsent: [ 'Shift-Space' ]) -> 'autocomplete')\x0a\x09}",
+messageSends: ["->", "at:ifAbsent:", "with:"],
+referencedClasses: ["SmalltalkSettings", "HashedCollection"]
 }),
 globals.HLCodeWidget);
 

+ 2 - 2
js/IDE.js

@@ -946,7 +946,7 @@ fn: function (aTextarea){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 self['@editor'] = CodeMirror.fromTextArea(aTextarea, {
-		theme: 'default',
+		theme: globals.SmalltalkSettings['ide.codeMirrorTheme'] || 'default',
 		mode: 'text/x-stsrc',
 		lineNumbers: true,
 		enterMode: 'flat',
@@ -957,7 +957,7 @@ self['@editor'] = CodeMirror.fromTextArea(aTextarea, {
 	});
 return self}, function($ctx1) {$ctx1.fill(self,"setEditorOn:",{aTextarea:aTextarea},globals.SourceArea)})},
 args: ["aTextarea"],
-source: "setEditorOn: aTextarea\x0a\x09<self['@editor'] = CodeMirror.fromTextArea(aTextarea, {\x0a\x09\x09theme: 'default',\x0a\x09\x09mode: 'text/x-stsrc',\x0a\x09\x09lineNumbers: true,\x0a\x09\x09enterMode: 'flat',\x0a\x09\x09indentWithTabs: true,\x0a\x09\x09indentUnit: 4,\x0a\x09\x09matchBrackets: true,\x0a\x09\x09electricChars: false\x0a\x09})>",
+source: "setEditorOn: aTextarea\x0a\x09<self['@editor'] = CodeMirror.fromTextArea(aTextarea, {\x0a\x09\x09theme: globals.SmalltalkSettings['ide.codeMirrorTheme'] || 'default',\x0a\x09\x09mode: 'text/x-stsrc',\x0a\x09\x09lineNumbers: true,\x0a\x09\x09enterMode: 'flat',\x0a\x09\x09indentWithTabs: true,\x0a\x09\x09indentUnit: 4,\x0a\x09\x09matchBrackets: true,\x0a\x09\x09electricChars: false\x0a\x09})>",
 messageSends: [],
 referencedClasses: []
 }),

+ 2 - 2
st/Helios-Workspace.st

@@ -82,7 +82,7 @@ currentLineOrSelection
 
 editorOptions
 	^ #{
-		'theme' -> 'default'.
+		'theme' -> (SmalltalkSettings at: 'helios.codeMirrorTheme' ifAbsent: [ 'default helios' ]).
 		'mode' -> 'text/x-stsrc'.
         'lineNumbers' -> true.
         'enterMode' -> 'flat'.
@@ -91,7 +91,7 @@ editorOptions
         'matchBrackets' -> true.
         'electricChars' -> false.
 		'keyMap' -> 'Amber'.
-		'extraKeys' -> #{'Shift-Space' -> 'autocomplete'}
+		'extraKeys' -> (HashedCollection with: (SmalltalkSettings at: 'helios.completionKey' ifAbsent: [ 'Shift-Space' ]) -> 'autocomplete')
 	}
 !
 

+ 1 - 1
st/IDE.st

@@ -210,7 +210,7 @@ selection
 
 setEditorOn: aTextarea
 	<self['@editor'] = CodeMirror.fromTextArea(aTextarea, {
-		theme: 'default',
+		theme: globals.SmalltalkSettings['ide.codeMirrorTheme'] || 'default',
 		mode: 'text/x-stsrc',
 		lineNumbers: true,
 		enterMode: 'flat',