blob: 8e63fd2875c17b08d9d1904047ff371d64786262 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
{ViewModel} = require './view-model'
module.exports =
class SearchViewModel extends ViewModel
constructor: (@searchMotion) ->
super(@searchMotion, class: 'search')
@historyIndex = -1
atom.commands.add(@view.editorElement, 'core:move-up', @increaseHistorySearch)
atom.commands.add(@view.editorElement, 'core:move-down', @decreaseHistorySearch)
restoreHistory: (index) ->
@view.editorElement.getModel().setText(@history(index))
history: (index) ->
@vimState.getSearchHistoryItem(index)
increaseHistorySearch: =>
if @history(@historyIndex + 1)?
@historyIndex += 1
@restoreHistory(@historyIndex)
decreaseHistorySearch: =>
if @historyIndex <= 0
# get us back to a clean slate
@historyIndex = -1
@view.editorElement.getModel().setText('')
else
@historyIndex -= 1
@restoreHistory(@historyIndex)
confirm: (view) =>
repeatChar = if @searchMotion.initiallyReversed then '?' else '/'
if @view.value is '' or @view.value is repeatChar
lastSearch = @history(0)
if lastSearch?
@view.value = lastSearch
else
@view.value = ''
atom.beep()
super(view)
@vimState.pushSearchHistory(@view.value)
update: (reverse) ->
if reverse
@view.classList.add('reverse-search-input')
@view.classList.remove('search-input')
else
@view.classList.add('search-input')
@view.classList.remove('reverse-search-input')
|