summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYukai Huang2017-03-28 11:57:44 +0800
committerYukai Huang2017-03-28 11:57:44 +0800
commitb86ecb1342673628151f729edc0c8714b1d07de0 (patch)
tree157158fca131a5ff1f913a6d4604ede14f255729
parent81666a726c831af23e1d04d18e8efae3ecc0930d (diff)
Extract selection update from updateStatusbar
-rw-r--r--public/js/index.js56
-rw-r--r--public/js/lib/editor/index.js3
-rw-r--r--public/views/statusbar.html7
3 files changed, 38 insertions, 28 deletions
diff --git a/public/js/index.js b/public/js/index.js
index e909eb4e..6754a92d 100644
--- a/public/js/index.js
+++ b/public/js/index.js
@@ -320,33 +320,10 @@ window.editor = editor
var inlineAttach = inlineAttachment.editors.codemirror4.attach(editor)
defaultTextHeight = parseInt($('.CodeMirror').css('line-height'))
-var selection = null
-
function updateStatusBar () {
if (!editorInstance.statusBar) return
var cursor = editor.getCursor()
var cursorText = 'Line ' + (cursor.line + 1) + ', Columns ' + (cursor.ch + 1)
- if (selection) {
- var anchor = selection.anchor
- var head = selection.head
- var start = head.line <= anchor.line ? head : anchor
- var end = head.line >= anchor.line ? head : anchor
- var selectionText = ' — Selected '
- var selectionCharCount = Math.abs(head.ch - anchor.ch)
- // borrow from brackets EditorStatusBar.js
- if (start.line !== end.line) {
- var lines = end.line - start.line + 1
- if (end.ch === 0) {
- lines--
- }
- selectionText += lines + ' lines'
- } else if (selectionCharCount > 0) {
- selectionText += selectionCharCount + ' columns'
- }
- if (start.line !== end.line || selectionCharCount > 0) {
- cursorText += selectionText
- }
- }
editorInstance.statusCursor.text(cursorText)
var fileText = ' — ' + editor.lineCount() + ' Lines'
editorInstance.statusFile.text(fileText)
@@ -2726,9 +2703,38 @@ editorInstance.on('cursorActivity', function (cm) {
updateStatusBar()
cursorActivity()
})
+
+editorInstance.on('beforeSelectionChange', updateStatusBar)
editorInstance.on('beforeSelectionChange', function (doc, selections) {
- if (selections) { selection = selections.ranges[0] } else { selection = null }
- updateStatusBar()
+ // check selection and whether the statusbar has added
+ if (selections && editorInstance.statusSelection) {
+ const selection = selections.ranges[0]
+
+ const anchor = selection.anchor
+ const head = selection.head
+ const start = head.line <= anchor.line ? head : anchor
+ const end = head.line >= anchor.line ? head : anchor
+ const selectionCharCount = Math.abs(head.ch - anchor.ch)
+
+ let selectionText = ' — Selected '
+
+ // borrow from brackets EditorStatusBar.js
+ if (start.line !== end.line) {
+ var lines = end.line - start.line + 1
+ if (end.ch === 0) {
+ lines--
+ }
+ selectionText += lines + ' lines'
+ } else if (selectionCharCount > 0) {
+ selectionText += selectionCharCount + ' columns'
+ }
+
+ if (start.line !== end.line || selectionCharCount > 0) {
+ editorInstance.statusSelection.text(selectionText)
+ } else {
+ editorInstance.statusSelection.text('')
+ }
+ }
})
var cursorActivity = _.debounce(cursorActivityInner, cursorActivityDebounce)
diff --git a/public/js/lib/editor/index.js b/public/js/lib/editor/index.js
index 8d617247..6eec34ad 100644
--- a/public/js/lib/editor/index.js
+++ b/public/js/lib/editor/index.js
@@ -144,7 +144,8 @@ export default class Editor {
return
}
this.statusBar = $(this.statusBarTemplate)
- this.statusCursor = this.statusBar.find('.status-cursor')
+ this.statusCursor = this.statusBar.find('.status-cursor > .status-line-column')
+ this.statusSelection = this.statusBar.find('.status-cursor > .status-selection')
this.statusFile = this.statusBar.find('.status-file')
this.statusIndicators = this.statusBar.find('.status-indicators')
this.statusIndent = this.statusBar.find('.status-indent')
diff --git a/public/views/statusbar.html b/public/views/statusbar.html
index 068b8d62..24cbf6c2 100644
--- a/public/views/statusbar.html
+++ b/public/views/statusbar.html
@@ -1,6 +1,9 @@
<div class="status-bar">
<div class="status-info">
- <div class="status-cursor"></div>
+ <div class="status-cursor">
+ <span class="status-line-column"></span>
+ <span class="status-selection"></span>
+ </div>
<div class="status-file"></div>
</div>
<div class="status-indicators">
@@ -35,4 +38,4 @@
<a class="ui-spellcheck-toggle" title="Toggle spellcheck"><i class="fa fa-check fa-fw"></i></a>
</div>
</div>
-</div> \ No newline at end of file
+</div>