Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sodium
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
28
Issues
28
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
redox-os
sodium
Commits
d5e77d23
Commit
d5e77d23
authored
Apr 25, 2016
by
Wesley Wiser
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Respond to PR feedback
parent
848ff01f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
35 deletions
+17
-35
prompt.rs
src/core/prompt.rs
+15
-33
editor.rs
src/state/editor.rs
+2
-2
No files found.
src/core/prompt.rs
View file @
d5e77d23
...
...
@@ -5,26 +5,6 @@ use edit::buffer::{Buffer, SplitBuffer};
use
std
::
process
::
exit
;
enum
BufferCommand
{
SwitchToBuffer
(
usize
),
}
fn
try_get_buffer_command
(
c
:
&
str
)
->
Option
<
BufferCommand
>
{
if
!
c
.starts_with
(
"b"
)
{
return
None
;
}
let
rest
:
String
=
c
.chars
()
.skip
(
1
)
.collect
();
//TODO more buffer commands
if
let
Ok
(
number
)
=
rest
.parse
::
<
usize
>
()
{
Some
(
BufferCommand
::
SwitchToBuffer
(
number
))
}
else
{
None
}
}
impl
Editor
{
/// Invoke a command in the prompt
pub
fn
invoke
(
&
mut
self
,
cmd
:
String
)
{
...
...
@@ -74,9 +54,9 @@ impl Editor {
},
"ls"
=>
{
let
description
=
get_buffers_description
(
&
self
.buffers
);
let
mut
new_buffer
:
BufferInfo
=
SplitBuffer
::
from_str
(
&
description
)
.into
();
let
mut
new_buffer
:
BufferInfo
=
SplitBuffer
::
from_str
(
&
description
)
.into
();
new_buffer
.title
=
Some
(
"<Buffers>"
.into
());
new_buffer
.is_transient
=
true
;
//delete the buffer when the user switches away
new_buffer
.is_transient
=
true
;
//
delete the buffer when the user switches away
let
new_buffer_index
=
self
.buffers
.new_buffer
(
new_buffer
);
self
.buffers
.switch_to
(
new_buffer_index
);
...
...
@@ -89,17 +69,19 @@ impl Editor {
exit
(
0
);
},
c
=>
{
if
let
Some
(
buffer_command
)
=
try_get_buffer_command
(
c
)
{
match
buffer_command
{
BufferCommand
::
SwitchToBuffer
(
n
)
=>
{
if
!
self
.buffers
.is_buffer_index_valid
(
n
)
{
self
.status_bar.msg
=
format!
(
"Invalid buffer #{}"
,
n
);
}
else
{
self
.buffers
.switch_to
(
n
);
self
.redraw_task
=
RedrawTask
::
Full
;
self
.status_bar.msg
=
format!
(
"Switched to buffer #{}"
,
n
);
}
},
if
c
.starts_with
(
"b"
)
{
let
rest
:
String
=
c
.chars
()
.skip
(
1
)
.collect
();
if
let
Ok
(
number
)
=
rest
.parse
::
<
usize
>
()
{
if
!
self
.buffers
.is_buffer_index_valid
(
number
)
{
self
.status_bar.msg
=
format!
(
"Invalid buffer #{}"
,
number
);
}
else
{
self
.buffers
.switch_to
(
number
);
self
.redraw_task
=
RedrawTask
::
Full
;
self
.status_bar.msg
=
format!
(
"Switched to buffer #{}"
,
number
);
}
}
else
{
self
.status_bar.msg
=
format!
(
"Unknown command: {}"
,
c
);
}
}
else
{
self
.status_bar.msg
=
format!
(
"Unknown command: {}"
,
c
);
...
...
src/state/editor.rs
View file @
d5e77d23
...
...
@@ -76,7 +76,7 @@ impl BufferManager {
pub
fn
new_buffer
(
&
mut
self
,
buffer
:
BufferInfo
)
->
usize
{
self
.buffers
.push
(
buffer
);
self
.buffers
.len
()
-
1
self
.buffers
.len
()
-
1
}
/// Returns an iterator over the buffers.
...
...
@@ -111,7 +111,7 @@ impl BufferManager {
/// Switch the current buffer to the specified buffer
pub
fn
switch_to
(
&
mut
self
,
n
:
usize
)
{
assert
!
(
n
<
self
.buffers
.len
(),
"Buffer index out of bounds"
);
debug_
assert!
(
n
<
self
.buffers
.len
(),
"Buffer index out of bounds"
);
// if the current view is transient, delete it
let
mut
n
=
n
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment