From b25974fdf8004781a7813527490b810c1d707904 Mon Sep 17 00:00:00 2001 From: Seong Jae Lee Date: Sat, 11 Apr 2015 21:24:27 -0700 Subject: [PATCH] Add auto-complete in the search panel - Also delete non-initial partial title matching feature, since it conflicts with creating a new document when there is no match. - Fix #5. --- lib/notational-velocity-view.coffee | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/notational-velocity-view.coffee b/lib/notational-velocity-view.coffee index 28bd586..74f0147 100644 --- a/lib/notational-velocity-view.coffee +++ b/lib/notational-velocity-view.coffee @@ -9,26 +9,39 @@ class NotationalVelocityView extends SelectListView super @addClass('notational-velocity from-top overlay') @loadData() + @prevFilterQuery = '' + @prevCursorPosition = 0 selectItem: (filterQuery) -> if filterQuery.length == 0 + @prevCursorPosition = 0 return null titlePatterns = [ ///^#{filterQuery}$///i, ///^#{filterQuery}///i, - ///(\s|\\|\/)#{filterQuery}///i, ] + titleItem = null for titlePattern in titlePatterns titleItems = @items .filter (x) -> x.title.match(titlePattern) != null .sort (x, y) -> if x.modified.getTime() <= y.modified.getTime() then 1 else -1 titleItem = if titleItems.length > 0 then titleItems[0] else null if titleItem != null - return titleItem + break - return null + # If title item is not null, auto-fill the search panel. + # But we don't want to fill it when deleting. + editor = @filterEditorView.model + currCursorPosition = editor.getCursorBufferPosition().column + if titleItem != null && @prevCursorPosition < currCursorPosition + @prevFilterQuery = titleItem.title + editor.setText(titleItem.title) + editor.selectLeft(titleItem.title.length - filterQuery.length) + @prevCursorPosition = currCursorPosition + + return titleItem filter: (filterQuery) -> if filterQuery.length == 0 @@ -155,3 +168,10 @@ class NotationalVelocityView extends SelectListView else @setError(@getEmptyMessage(@items.length, filteredItems.length)) + + schedulePopulateList: -> + # We can skip it when we are just moving the position of the cursor. + currFilterQuery = @getFilterQuery() + if @prevFilterQuery != currFilterQuery + super + @prevFilterQuery = currFilterQuery