- If the second address is empty, it is assumed to be `.`
- Regex addresses and `:substitute` now integrate with search history and
respect case sensitivity settings
- Patterns for `:substitute` can't be delimited by
- `:set` now supports inverting options using `:set inv{option}` and
`:set {option}!`
- New commands: `:new`, `:vnew`, `:exit`, `:xall`, `:wall`, `:qall`, `:update`
36 lines
924 B
CoffeeScript
36 lines
924 B
CoffeeScript
_ = require 'underscore-plus'
|
|
|
|
module.exports =
|
|
getSearchTerm: (term, modifiers = {'g': true}) ->
|
|
escaped = false
|
|
hasc = false
|
|
hasC = false
|
|
term_ = term
|
|
term = ''
|
|
for char in term_
|
|
if char is '\\' and not escaped
|
|
escaped = true
|
|
term += char
|
|
else
|
|
if char is 'c' and escaped
|
|
hasc = true
|
|
term = term[...-1]
|
|
else if char is 'C' and escaped
|
|
hasC = true
|
|
term = term[...-1]
|
|
else if char isnt '\\'
|
|
term += char
|
|
escaped = false
|
|
|
|
if hasC
|
|
modifiers['i'] = false
|
|
if (not hasC and not term.match('[A-Z]') and \
|
|
atom.config.get('vim-mode.useSmartcaseForSearch')) or hasc
|
|
modifiers['i'] = true
|
|
|
|
modFlags = Object.keys(modifiers).filter((key) -> modifiers[key]).join('')
|
|
|
|
try
|
|
new RegExp(term, modFlags)
|
|
catch
|
|
new RegExp(_.escapeRegExp(term), modFlags)
|