summaryrefslogtreecommitdiff
path: root/public/js
diff options
context:
space:
mode:
authorYukai Huang2017-03-28 11:57:44 +0800
committerYukai Huang2017-03-28 11:57:44 +0800
commitb86ecb1342673628151f729edc0c8714b1d07de0 (patch)
tree157158fca131a5ff1f913a6d4604ede14f255729 /public/js
parent81666a726c831af23e1d04d18e8efae3ecc0930d (diff)
Extract selection update from updateStatusbar
Diffstat (limited to 'public/js')
-rw-r--r--public/js/index.js56
-rw-r--r--public/js/lib/editor/index.js3
2 files changed, 33 insertions, 26 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')