bug: allow '/' in search
This commit is contained in:
parent
fc7eb937f3
commit
aaf9984039
|
@ -666,28 +666,29 @@ fn render-json-escaped-unicode-grapheme screen: (addr screen), stream: (addr str
|
||||||
|
|
||||||
fn update-environment _env: (addr environment), key: byte, users: (addr array user), channels: (addr array channel), items: (addr item-list) {
|
fn update-environment _env: (addr environment), key: byte, users: (addr array user), channels: (addr array channel), items: (addr item-list) {
|
||||||
var env/edi: (addr environment) <- copy _env
|
var env/edi: (addr environment) <- copy _env
|
||||||
# back in history
|
# first dispatch to search mode if necessary
|
||||||
{
|
{
|
||||||
compare key, 0x1b/esc
|
var cursor-in-search?/eax: (addr boolean) <- get env, cursor-in-search?
|
||||||
break-if-!=
|
compare *cursor-in-search?, 0/false
|
||||||
{
|
break-if-=
|
||||||
var cursor-in-search?/eax: (addr boolean) <- get env, cursor-in-search?
|
update-search env, key, users, channels, items
|
||||||
compare *cursor-in-search?, 0/false
|
|
||||||
break-if-=
|
|
||||||
copy-to *cursor-in-search?, 0/false
|
|
||||||
return
|
|
||||||
}
|
|
||||||
previous-tab env
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
compare key, 0x2f/slash
|
compare key, 0x2f/slash
|
||||||
break-if-!=
|
break-if-!=
|
||||||
# start search mode
|
# enter search mode
|
||||||
var cursor-in-search?/eax: (addr boolean) <- get env, cursor-in-search?
|
var cursor-in-search?/eax: (addr boolean) <- get env, cursor-in-search?
|
||||||
copy-to *cursor-in-search?, 1/true
|
copy-to *cursor-in-search?, 1/true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
compare key, 0x1b/esc
|
||||||
|
break-if-!=
|
||||||
|
# back in history
|
||||||
|
previous-tab env
|
||||||
|
return
|
||||||
|
}
|
||||||
var cursor-in-channels?/eax: (addr boolean) <- get env, cursor-in-channels?
|
var cursor-in-channels?/eax: (addr boolean) <- get env, cursor-in-channels?
|
||||||
{
|
{
|
||||||
compare key, 9/tab
|
compare key, 9/tab
|
||||||
|
@ -696,14 +697,6 @@ fn update-environment _env: (addr environment), key: byte, users: (addr array us
|
||||||
not *cursor-in-channels?
|
not *cursor-in-channels?
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
# dispatch based on where the cursor is
|
|
||||||
{
|
|
||||||
var cursor-in-search?/eax: (addr boolean) <- get env, cursor-in-search?
|
|
||||||
compare *cursor-in-search?, 0/false
|
|
||||||
break-if-=
|
|
||||||
update-search env, key, users, channels, items
|
|
||||||
return
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
compare *cursor-in-channels?, 0/false
|
compare *cursor-in-channels?, 0/false
|
||||||
break-if-!=
|
break-if-!=
|
||||||
|
@ -773,11 +766,19 @@ fn update-channels-nav _env: (addr environment), key: byte, users: (addr array u
|
||||||
|
|
||||||
fn update-search _env: (addr environment), key: byte, users: (addr array user), channels: (addr array channel), items: (addr item-list) {
|
fn update-search _env: (addr environment), key: byte, users: (addr array user), channels: (addr array channel), items: (addr item-list) {
|
||||||
var env/edi: (addr environment) <- copy _env
|
var env/edi: (addr environment) <- copy _env
|
||||||
|
var cursor-in-search?/eax: (addr boolean) <- get env, cursor-in-search?
|
||||||
|
{
|
||||||
|
compare key 0x1b/esc
|
||||||
|
break-if-!=
|
||||||
|
# get out of search mode
|
||||||
|
copy-to *cursor-in-search?, 0/false
|
||||||
|
return
|
||||||
|
}
|
||||||
{
|
{
|
||||||
compare key, 0xa/newline
|
compare key, 0xa/newline
|
||||||
break-if-!=
|
break-if-!=
|
||||||
|
# perform a search, then get out of search mode
|
||||||
new-search-tab env, items
|
new-search-tab env, items
|
||||||
var cursor-in-search?/eax: (addr boolean) <- get env, cursor-in-search?
|
|
||||||
copy-to *cursor-in-search?, 0/false
|
copy-to *cursor-in-search?, 0/false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue