Skip to content

Commit da46a36

Browse files
committed
Add preferences to editor status bar and make allow override browser keymap option
1 parent 778b6f3 commit da46a36

3 files changed

Lines changed: 75 additions & 2 deletions

File tree

public/css/index.css

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,16 +404,28 @@ div[contenteditable]:empty:not(:focus):before{
404404

405405
.status-bar .status-indicators .status-keymap > a,
406406
.status-bar .status-indicators .status-theme > a,
407-
.status-bar .status-indicators .status-spellcheck > a {
407+
.status-bar .status-indicators .status-spellcheck > a,
408+
.status-bar .status-indicators .status-preferences > a {
408409
color: inherit;
409410
text-decoration: none;
410411
}
411412

412413
.status-bar .status-indicators .status-theme,
413-
.status-bar .status-indicators .status-spellcheck {
414+
.status-bar .status-indicators .status-spellcheck,
415+
.status-bar .status-indicators .status-preferences {
414416
padding: 0 4.3px;
415417
}
416418

419+
.status-bar .status-indicators .status-preferences .dropdown-menu > li > a {
420+
cursor: default;
421+
}
422+
423+
.status-bar .status-indicators .status-preferences .dropdown-menu label {
424+
font: inherit;
425+
margin-bottom: 0;
426+
cursor: pointer;
427+
}
428+
417429
.ui-theme-toggle,
418430
.ui-spellcheck-toggle {
419431
opacity: 0.2;

public/js/index.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,7 @@ var statusKeymap = null;
472472
var statusIndent = null;
473473
var statusTheme = null;
474474
var statusSpellcheck = null;
475+
var statusPreferences = null;
475476

476477
function getStatusBarTemplate(callback) {
477478
$.get(serverurl + '/views/statusbar.html', function (template) {
@@ -495,6 +496,7 @@ function addStatusBar() {
495496
statusLength = statusBar.find('.status-length');
496497
statusTheme = statusBar.find('.status-theme');
497498
statusSpellcheck = statusBar.find('.status-spellcheck');
499+
statusPreferences = statusBar.find('.status-preferences');
498500
statusPanel = editor.addPanel(statusBar[0], {
499501
position: "bottom"
500502
});
@@ -503,6 +505,7 @@ function addStatusBar() {
503505
setKeymap();
504506
setTheme();
505507
setSpellcheck();
508+
setPreferences();
506509
}
507510

508511
function setIndent() {
@@ -619,6 +622,8 @@ function setKeymap() {
619622
expires: 365
620623
});
621624
label.text(keymap);
625+
restoreOverrideEditorKeymap();
626+
setOverrideBrowserKeymap();
622627
}
623628
setKeymapLabel();
624629

@@ -719,6 +724,50 @@ function setSpellcheck() {
719724
}
720725
}
721726

727+
var jumpToAddressBarKeymapName = mac ? "Cmd-L" : "Ctrl-L";
728+
var jumpToAddressBarKeymapValue = null;
729+
function resetEditorKeymapToBrowserKeymap() {
730+
var keymap = editor.getOption('keyMap');
731+
if (!jumpToAddressBarKeymapValue) {
732+
jumpToAddressBarKeymapValue = CodeMirror.keyMap[keymap][jumpToAddressBarKeymapName];
733+
delete CodeMirror.keyMap[keymap][jumpToAddressBarKeymapName];
734+
}
735+
}
736+
function restoreOverrideEditorKeymap() {
737+
var keymap = editor.getOption('keyMap');
738+
if (jumpToAddressBarKeymapValue) {
739+
CodeMirror.keyMap[keymap][jumpToAddressBarKeymapName] = jumpToAddressBarKeymapValue;
740+
jumpToAddressBarKeymapValue = null;
741+
}
742+
}
743+
function setOverrideBrowserKeymap() {
744+
var overrideBrowserKeymap = $('.ui-preferences-override-browser-keymap label > input[type="checkbox"]');
745+
if(overrideBrowserKeymap.is(":checked")) {
746+
Cookies.set('preferences-override-browser-keymap', true, {
747+
expires: 365
748+
});
749+
restoreOverrideEditorKeymap();
750+
} else {
751+
Cookies.remove('preferences-override-browser-keymap');
752+
resetEditorKeymapToBrowserKeymap();
753+
}
754+
}
755+
756+
function setPreferences() {
757+
var overrideBrowserKeymap = $('.ui-preferences-override-browser-keymap label > input[type="checkbox"]');
758+
var cookieOverrideBrowserKeymap = Cookies.get('preferences-override-browser-keymap');
759+
if (cookieOverrideBrowserKeymap && cookieOverrideBrowserKeymap === "true") {
760+
overrideBrowserKeymap.prop('checked', true);
761+
} else {
762+
overrideBrowserKeymap.prop('checked', false);
763+
}
764+
setOverrideBrowserKeymap();
765+
766+
overrideBrowserKeymap.change(function() {
767+
setOverrideBrowserKeymap();
768+
});
769+
}
770+
722771
var selection = null;
723772

724773
function updateStatusBar() {
@@ -989,6 +1038,10 @@ $(document).ready(function () {
9891038
key('ctrl+alt+b', function (e) {
9901039
changeMode(modeType.both);
9911040
});
1041+
// toggle-dropdown
1042+
$(document).on('click', '.toggle-dropdown .dropdown-menu', function (e) {
1043+
e.stopPropagation();
1044+
});
9921045
});
9931046
//when page resize
9941047
$(window).resize(function () {

public/views/statusbar.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@
55
</div>
66
<div class="status-indicators">
77
<div class="status-length"></div>
8+
<div class="status-preferences dropup toggle-dropdown pull-right">
9+
<a id="preferencesLabel" class="ui-preferences-label text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Click to change preferences">
10+
<i class="fa fa-wrench fa-fw"></i>
11+
</a>
12+
<ul class="dropdown-menu" aria-labelledby="preferencesLabel">
13+
<li class="ui-preferences-override-browser-keymap"><a><label>Allow override browser keymap&nbsp;&nbsp;<input type="checkbox"></label></a></li>
14+
</ul>
15+
</div>
816
<div class="status-keymap dropup pull-right">
917
<a id="keymapLabel" class="ui-keymap-label text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Click to change keymap">
1018
Sublime

0 commit comments

Comments
 (0)