added alternate screen for unix working on raw screen featuresbash: wq: command not found
This commit is contained in:
parent
3878993459
commit
48a429a396
@ -2,30 +2,29 @@
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="310aeab2-4737-4e8e-b7eb-0aac10d104a3" name="Default" comment="">
|
||||
<change beforePath="" afterPath="$PROJECT_DIR$/src/shared/raw.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
<change beforePath="$PROJECT_DIR$/Cargo.toml" afterPath="$PROJECT_DIR$/Cargo.toml" />
|
||||
<change beforePath="$PROJECT_DIR$/examples/Crossterm 0.2.1/terminal/alternate_screen.rs" afterPath="" />
|
||||
<change beforePath="$PROJECT_DIR$/examples/Crossterm 0.2.1/terminal/raw_mode.rs" afterPath="" />
|
||||
<change beforePath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/color/mod.rs" afterPath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/color/mod.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/bin.rs" afterPath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/bin.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/alternate_screen.rs" afterPath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/alternate_screen.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/mod.rs" afterPath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/mod.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/raw_mode.rs" afterPath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/raw_mode.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/terminal.rs" afterPath="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/terminal.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/cursor/ansi_cursor.rs" afterPath="$PROJECT_DIR$/src/cursor/ansi_cursor.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/cursor/cursor.rs" afterPath="$PROJECT_DIR$/src/cursor/cursor.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/cursor/mod.rs" afterPath="$PROJECT_DIR$/src/cursor/mod.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/kernel/unix_kernel/terminal.rs" afterPath="$PROJECT_DIR$/src/kernel/unix_kernel/terminal.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/lib.rs" afterPath="$PROJECT_DIR$/src/lib.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/manager/ansi_manager.rs" afterPath="$PROJECT_DIR$/src/manager/ansi_manager.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/manager/manager.rs" afterPath="$PROJECT_DIR$/src/manager/manager.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/manager/mod.rs" afterPath="$PROJECT_DIR$/src/manager/mod.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/manager/terminal.rs" afterPath="$PROJECT_DIR$/src/manager/terminal.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/shared/functions.rs" afterPath="$PROJECT_DIR$/src/shared/functions.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/manager/terminal.rs" afterPath="$PROJECT_DIR$/src/shared/terminal.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/shared/mod.rs" afterPath="$PROJECT_DIR$/src/shared/mod.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/state/commands/mod.rs" afterPath="$PROJECT_DIR$/src/state/commands/mod.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/state/commands/shared_commands.rs" afterPath="$PROJECT_DIR$/src/state/commands/shared_commands.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/state/commands/unix_command.rs" afterPath="$PROJECT_DIR$/src/state/commands/unix_command.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/state/commands/win_commands.rs" afterPath="$PROJECT_DIR$/src/state/commands/win_commands.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/state/context.rs" afterPath="$PROJECT_DIR$/src/state/context.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/style/color/ansi_color.rs" afterPath="$PROJECT_DIR$/src/style/color/ansi_color.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/style/color/color.rs" afterPath="$PROJECT_DIR$/src/style/color/color.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/style/color/mod.rs" afterPath="$PROJECT_DIR$/src/style/color/mod.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/style/styles/objectstyle.rs" afterPath="$PROJECT_DIR$/src/style/styles/objectstyle.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/style/styles/styledobject.rs" afterPath="$PROJECT_DIR$/src/style/styles/styledobject.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/terminal/ansi_terminal.rs" afterPath="$PROJECT_DIR$/src/terminal/ansi_terminal.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/terminal/mod.rs" afterPath="$PROJECT_DIR$/src/terminal/mod.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/terminal/screen.rs" afterPath="$PROJECT_DIR$/src/terminal/screen.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/terminal/raw.rs" afterPath="" />
|
||||
<change beforePath="$PROJECT_DIR$/src/terminal/screen.rs" afterPath="$PROJECT_DIR$/src/shared/screen.rs" />
|
||||
<change beforePath="$PROJECT_DIR$/src/terminal/terminal.rs" afterPath="$PROJECT_DIR$/src/terminal/terminal.rs" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
@ -36,7 +35,111 @@
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file leaf-file-name="alternate_screen.rs" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/alternate_screen.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1456">
|
||||
<caret line="56" column="7" lean-forward="false" selection-start-line="56" selection-start-column="7" selection-end-line="56" selection-end-column="7" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="raw_mode.rs" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/raw_mode.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="604">
|
||||
<caret line="53" column="0" lean-forward="false" selection-start-line="53" selection-start-column="0" selection-end-line="53" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="raw.rs" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/raw.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="500">
|
||||
<caret line="94" column="4" lean-forward="false" selection-start-line="94" selection-start-column="4" selection-end-line="94" selection-end-column="4" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="context.rs" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/state/context.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="474">
|
||||
<caret line="55" column="26" lean-forward="false" selection-start-line="55" selection-start-column="26" selection-end-line="55" selection-end-column="26" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="macros.rs" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/macros.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="52">
|
||||
<caret line="2" column="13" lean-forward="false" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="terminal.rs" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="296">
|
||||
<caret line="14" column="8" lean-forward="false" selection-start-line="14" selection-start-column="8" selection-end-line="14" selection-end-column="8" />
|
||||
<folding>
|
||||
<element signature="e#488#1011#0" expanded="false" />
|
||||
<element signature="e#1152#2177#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="unix_command.rs" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/unix_command.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="292">
|
||||
<caret line="101" column="27" lean-forward="false" selection-start-line="101" selection-start-column="27" selection-end-line="101" selection-end-column="27" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="lib.rs" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$USER_HOME$/.cargo/registry/src/github.com-1ecc6299db9ec823/termios-0.3.0/src/lib.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="296">
|
||||
<caret line="170" column="11" lean-forward="false" selection-start-line="170" selection-start-column="11" selection-end-line="170" selection-end-column="11" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="Cargo.toml" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/Cargo.toml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="287">
|
||||
<caret line="13" column="14" lean-forward="false" selection-start-line="13" selection-start-column="14" selection-end-line="13" selection-end-column="14" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="terminal.rs" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/kernel/unix_kernel/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="366">
|
||||
<caret line="86" column="31" lean-forward="false" selection-start-line="86" selection-start-column="31" selection-end-line="86" selection-end-column="31" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
@ -60,7 +163,6 @@
|
||||
<find>return</find>
|
||||
<find>crossterm_</find>
|
||||
<find>clear</find>
|
||||
<find>context</find>
|
||||
<find>self.</find>
|
||||
<find>output</find>
|
||||
<find>std</find>
|
||||
@ -72,11 +174,12 @@
|
||||
<find>command</find>
|
||||
<find>Context</find>
|
||||
<find>End</find>
|
||||
<find>terminal</find>
|
||||
<find>termina</find>
|
||||
<find>screen</find>
|
||||
<find>colored_terminal</find>
|
||||
<find>ObjectStyle</find>
|
||||
<find>context</find>
|
||||
<find>terminal</find>
|
||||
</findStrings>
|
||||
<replaceStrings>
|
||||
<replace>crossterm_cursor</replace>
|
||||
@ -102,13 +205,6 @@
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/src/kernel/windows_kernel/cursor.rs" />
|
||||
<option value="$PROJECT_DIR$/src/crossterm_state/commands/win_commands.rs" />
|
||||
<option value="$PROJECT_DIR$/src/crossterm_state/context.rs" />
|
||||
<option value="$PROJECT_DIR$/src/crossterm_terminal/screen/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/crossterm_terminal/raw_terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/crossterm_terminal/raw.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/color/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/winapi_terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/kernel/windows_kernel/ansi_support.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/terminal/raw_mode.rs" />
|
||||
@ -119,14 +215,7 @@
|
||||
<option value="$PROJECT_DIR$/src/manager/win_manager.rs" />
|
||||
<option value="$PROJECT_DIR$/src/kernel/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/terminal/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/shared/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/shared/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/lib.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/commands/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/commands/win_commands.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/raw.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/terminal/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/commands/unix_command.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/bin.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/cursor/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/style/mod.rs" />
|
||||
@ -134,25 +223,39 @@
|
||||
<option value="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/color/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/Cargo.toml" />
|
||||
<option value="$PROJECT_DIR$/src/shared/functions.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/commands/shared_commands.rs" />
|
||||
<option value="$PROJECT_DIR$/src/cursor/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/style/color/ansi_color.rs" />
|
||||
<option value="$PROJECT_DIR$/src/style/color/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/style/styles/objectstyle.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/screen.rs" />
|
||||
<option value="$PROJECT_DIR$/src/manager/manager.rs" />
|
||||
<option value="$PROJECT_DIR$/src/manager/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/manager/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/context.rs" />
|
||||
<option value="$PROJECT_DIR$/src/manager/ansi_manager.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/kernel/unix_kernel/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/style/color/color.rs" />
|
||||
<option value="$PROJECT_DIR$/src/cursor/cursor.rs" />
|
||||
<option value="$PROJECT_DIR$/src/style/styles/styledobject.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/ansi_terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/cursor/ansi_cursor.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/screen.rs" />
|
||||
<option value="$PROJECT_DIR$/src/shared/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/commands/win_commands.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/commands/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/raw.rs" />
|
||||
<option value="$PROJECT_DIR$/src/terminal/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/shared/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/manager/mod.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/commands/shared_commands.rs" />
|
||||
<option value="$PROJECT_DIR$/src/manager/manager.rs" />
|
||||
<option value="$PROJECT_DIR$/src/manager/ansi_manager.rs" />
|
||||
<option value="$PROJECT_DIR$/src/shared/screen.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/alternate_screen.rs" />
|
||||
<option value="$PROJECT_DIR$/src/lib.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/bin.rs" />
|
||||
<option value="$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/raw_mode.rs" />
|
||||
<option value="$PROJECT_DIR$/src/shared/raw.rs" />
|
||||
<option value="$PROJECT_DIR$/src/kernel/unix_kernel/terminal.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/context.rs" />
|
||||
<option value="$PROJECT_DIR$/src/state/commands/unix_command.rs" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@ -202,8 +305,8 @@
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scratches" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
@ -219,13 +322,20 @@
|
||||
<path>
|
||||
<item name="crossterm" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="crossterm" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="examples" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Crossterm 0.2.2 - New Version (Not finished)" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="crossterm" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="crossterm" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="examples" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Crossterm 0.2.2 - New Version (Not finished)" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="terminal" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="crossterm" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="crossterm" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="cursor" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="crossterm" type="b2602c69:ProjectViewProjectNode" />
|
||||
@ -271,13 +381,6 @@
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="style" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="crossterm" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="crossterm" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="style" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="color" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="crossterm" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="crossterm" type="462c0819:PsiDirectoryNode" />
|
||||
@ -295,22 +398,22 @@
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
<pane id="AndroidView" />
|
||||
<pane id="Scratches" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="SearchEverywhereHistoryKey" value="	FILE	file://D:/Windows/GIT/crossterm/src/crossterm_state/commands/win_commands.rs" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="aspect.path.notification.shown" value="true" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/../rust" />
|
||||
<property name="org.rust.cargo.project.model.PROJECT_DISCOVERY" value="true" />
|
||||
<property name="settings.editor.selected.configurable" value="preferences.sourceCode.Rust" />
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/src/manager" />
|
||||
<recent name="$PROJECT_DIR$/src/shared" />
|
||||
<recent name="$PROJECT_DIR$/src/manager" />
|
||||
<recent name="D:\Windows\GIT\crossterm\src\crossterm_terminal" />
|
||||
<recent name="D:\Windows\GIT\crossterm\src\crossterm_state" />
|
||||
<recent name="D:\Windows\GIT\crossterm\src\shared" />
|
||||
@ -504,15 +607,20 @@
|
||||
<workItem from="1528305149128" duration="8128000" />
|
||||
<workItem from="1528395000021" duration="4555000" />
|
||||
<workItem from="1528524165703" duration="4198000" />
|
||||
<workItem from="1528547275121" duration="20103000" />
|
||||
<workItem from="1528547275121" duration="20207000" />
|
||||
<workItem from="1528632802197" duration="5740000" />
|
||||
<workItem from="1528733714476" duration="6794000" />
|
||||
<workItem from="1528828385642" duration="3639000" />
|
||||
<workItem from="1528911713517" duration="4702000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="489770000" />
|
||||
<option name="totallyTimeSpent" value="510749000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="67" y="27" width="2493" height="1055" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
@ -522,26 +630,26 @@
|
||||
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.27038628" sideWeight="0.503125" order="7" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33722162" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33722162" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.162856" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.162856" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Database Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.24181627" sideWeight="0.496875" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.14914162" sideWeight="0.496875" order="1" side_tool="false" content_ui="tabs" />
|
||||
</layout>
|
||||
<layout-to-restore>
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
@ -584,55 +692,6 @@
|
||||
<watches-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/src/kernel/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="182">
|
||||
<caret line="7" column="0" lean-forward="false" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/terminal/raw_mode.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="48" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/kernel/windows_kernel/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="182">
|
||||
<caret line="7" column="1" lean-forward="false" selection-start-line="7" selection-start-column="1" selection-end-line="7" selection-end-column="1" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/libcore/result.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="20072">
|
||||
<caret line="778" column="11" lean-forward="false" selection-start-line="778" selection-start-column="11" selection-end-line="778" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="15" lean-forward="false" selection-start-line="0" selection-start-column="15" selection-end-line="0" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="130">
|
||||
<caret line="5" column="18" lean-forward="false" selection-start-line="5" selection-start-column="18" selection-end-line="5" selection-end-column="18" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/terminal/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="26">
|
||||
<caret line="1" column="0" lean-forward="false" selection-start-line="1" selection-start-column="0" selection-end-line="1" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/kernel/windows_kernel/cursor.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="578">
|
||||
@ -647,13 +706,6 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/terminal/raw.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="501">
|
||||
<caret line="64" column="18" lean-forward="false" selection-start-line="64" selection-start-column="18" selection-end-line="64" selection-end-column="18" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/libstd/sync/mutex.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="296">
|
||||
@ -661,43 +713,13 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="317">
|
||||
<caret line="32" column="7" lean-forward="false" selection-start-line="32" selection-start-column="7" selection-end-line="32" selection-end-column="7" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/bin.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="494">
|
||||
<caret line="19" column="22" lean-forward="false" selection-start-line="19" selection-start-column="22" selection-end-line="19" selection-end-column="22" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/cursor/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="756">
|
||||
<caret line="105" column="14" lean-forward="false" selection-start-line="92" selection-start-column="4" selection-end-line="105" selection-end-column="14" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/terminal/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-2568">
|
||||
<caret line="22" column="31" lean-forward="false" selection-start-line="22" selection-start-column="31" selection-end-line="22" selection-end-column="31" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/bin.rs" />
|
||||
<entry file="file://$PROJECT_DIR$/examples/cursor/mod.rs" />
|
||||
<entry file="file://$PROJECT_DIR$/examples/terminal/terminal.rs" />
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/traits.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="338">
|
||||
<caret line="13" column="0" lean-forward="false" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -705,15 +727,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="4" lean-forward="false" selection-start-line="0" selection-start-column="4" selection-end-line="0" selection-end-column="4" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/macros.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="52">
|
||||
<caret line="2" column="13" lean-forward="false" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -721,7 +734,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="104">
|
||||
<caret line="4" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -729,109 +741,23 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="702">
|
||||
<caret line="27" column="27" lean-forward="false" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/color/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="494">
|
||||
<caret line="31" column="38" lean-forward="false" selection-start-line="31" selection-start-column="38" selection-end-line="31" selection-end-column="38" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/terminal/alternate_screen.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="473">
|
||||
<caret line="120" column="30" lean-forward="false" selection-start-line="120" selection-start-column="30" selection-end-line="120" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/color/mod.rs" />
|
||||
<entry file="file://$PROJECT_DIR$/examples/terminal/alternate_screen.rs" />
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.0/terminal/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.1/terminal/alternate_screen.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/bin.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="338">
|
||||
<caret line="13" column="23" lean-forward="false" selection-start-line="13" selection-start-column="23" selection-end-line="13" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/color/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="624">
|
||||
<caret line="24" column="14" lean-forward="false" selection-start-line="24" selection-start-column="14" selection-end-line="24" selection-end-column="14" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/lib.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="16" column="27" lean-forward="false" selection-start-line="16" selection-start-column="27" selection-end-line="16" selection-end-column="27" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Cargo.toml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="547">
|
||||
<caret line="23" column="17" lean-forward="false" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="17" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/functions.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="364">
|
||||
<caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#467#468#0" expanded="false" />
|
||||
<element signature="e#489#490#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/shared_commands.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="338">
|
||||
<caret line="13" column="0" lean-forward="false" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#381#382#0" expanded="false" />
|
||||
<element signature="e#440#441#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/win_commands.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="837">
|
||||
<caret line="145" column="11" lean-forward="false" selection-start-line="145" selection-start-column="11" selection-end-line="145" selection-end-column="11" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.1/terminal/alternate_screen.rs" />
|
||||
<entry file="file://$PROJECT_DIR$/src/kernel/unix_kernel/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -839,7 +765,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="370">
|
||||
<caret line="27" column="4" lean-forward="true" selection-start-line="27" selection-start-column="4" selection-end-line="27" selection-end-column="4" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -847,7 +772,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="390">
|
||||
<caret line="17" column="5" lean-forward="true" selection-start-line="17" selection-start-column="5" selection-end-line="17" selection-end-column="5" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -855,84 +779,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="442">
|
||||
<caret line="17" column="29" lean-forward="true" selection-start-line="17" selection-start-column="29" selection-end-line="17" selection-end-column="29" />
|
||||
<folding>
|
||||
<element signature="e#1768#1769#0" expanded="false" />
|
||||
<element signature="e#1805#1806#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/terminal/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="156">
|
||||
<caret line="6" column="0" lean-forward="true" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/terminal/screen.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="364">
|
||||
<caret line="14" column="7" lean-forward="true" selection-start-line="14" selection-start-column="7" selection-end-line="14" selection-end-column="7" />
|
||||
<folding>
|
||||
<element signature="e#1905#1906#0" expanded="false" />
|
||||
<element signature="e#1971#1972#0" expanded="false" />
|
||||
<element signature="e#2009#2010#0" expanded="false" />
|
||||
<element signature="e#2078#2079#0" expanded="false" />
|
||||
<element signature="e#2571#2572#0" expanded="false" />
|
||||
<element signature="e#2637#2638#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/manager/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="156">
|
||||
<caret line="6" column="29" lean-forward="false" selection-start-line="6" selection-start-column="29" selection-end-line="6" selection-end-column="29" />
|
||||
<folding>
|
||||
<element signature="e#493#1016#0" expanded="false" />
|
||||
<element signature="e#1157#2182#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/manager/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="312">
|
||||
<caret line="12" column="0" lean-forward="false" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/context.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="260">
|
||||
<caret line="10" column="0" lean-forward="false" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/manager/ansi_manager.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="390">
|
||||
<caret line="18" column="5" lean-forward="false" selection-start-line="18" selection-start-column="5" selection-end-line="18" selection-end-column="5" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/terminal/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="468">
|
||||
<caret line="18" column="20" lean-forward="false" selection-start-line="18" selection-start-column="20" selection-end-line="18" selection-end-column="20" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/manager/manager.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="130">
|
||||
<caret line="5" column="11" lean-forward="false" selection-start-line="5" selection-start-column="11" selection-end-line="5" selection-end-column="11" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -940,7 +786,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="448">
|
||||
<caret line="22" column="90" lean-forward="false" selection-start-line="22" selection-start-column="90" selection-end-line="22" selection-end-column="90" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -948,7 +793,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="390">
|
||||
<caret line="15" column="1" lean-forward="false" selection-start-line="15" selection-start-column="1" selection-end-line="15" selection-end-column="1" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -960,19 +804,88 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/kernel/unix_kernel/terminal.rs">
|
||||
<entry file="file://$PROJECT_DIR$/src/terminal/ansi_terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="390">
|
||||
<caret line="15" column="22" lean-forward="false" selection-start-line="15" selection-start-column="22" selection-end-line="15" selection-end-column="22" />
|
||||
<state relative-caret-position="572">
|
||||
<caret line="59" column="59" lean-forward="false" selection-start-line="59" selection-start-column="59" selection-end-line="59" selection-end-column="59" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/color/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="546">
|
||||
<caret line="21" column="1" lean-forward="false" selection-start-line="21" selection-start-column="1" selection-end-line="21" selection-end-column="1" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/cursor/ansi_cursor.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="448">
|
||||
<caret line="22" column="89" lean-forward="false" selection-start-line="22" selection-start-column="89" selection-end-line="22" selection-end-column="89" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/win_commands.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="241">
|
||||
<caret line="91" column="1" lean-forward="false" selection-start-line="91" selection-start-column="1" selection-end-line="91" selection-end-column="1" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="439">
|
||||
<caret line="39" column="10" lean-forward="false" selection-start-line="39" selection-start-column="10" selection-end-line="39" selection-end-column="10" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/unix_command.rs">
|
||||
<entry file="file://$PROJECT_DIR$/src/state/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="494">
|
||||
<caret line="28" column="52" lean-forward="false" selection-start-line="28" selection-start-column="52" selection-end-line="28" selection-end-column="52" />
|
||||
<folding />
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="15" lean-forward="false" selection-start-line="0" selection-start-column="15" selection-end-line="0" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/functions.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="364">
|
||||
<caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/terminal/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="98">
|
||||
<caret line="5" column="30" lean-forward="false" selection-start-line="5" selection-start-column="30" selection-end-line="5" selection-end-column="30" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="208">
|
||||
<caret line="8" column="12" lean-forward="false" selection-start-line="8" selection-start-column="12" selection-end-line="8" selection-end-column="12" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/shared_commands.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="468">
|
||||
<caret line="20" column="24" lean-forward="false" selection-start-line="20" selection-start-column="24" selection-end-line="20" selection-end-column="24" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/manager/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="312">
|
||||
<caret line="12" column="10" lean-forward="false" selection-start-line="12" selection-start-column="10" selection-end-line="12" selection-end-column="10" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/manager/manager.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-72">
|
||||
<caret line="7" column="37" lean-forward="false" selection-start-line="7" selection-start-column="37" selection-end-line="7" selection-end-column="37" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -980,31 +893,146 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="552">
|
||||
<caret line="132" column="28" lean-forward="false" selection-start-line="132" selection-start-column="28" selection-end-line="132" selection-end-column="28" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/manager/ansi_manager.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="364">
|
||||
<caret line="35" column="5" lean-forward="false" selection-start-line="35" selection-start-column="5" selection-end-line="35" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="260">
|
||||
<caret line="10" column="20" lean-forward="false" selection-start-line="10" selection-start-column="20" selection-end-line="10" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/lib.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="546">
|
||||
<caret line="21" column="0" lean-forward="false" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/terminal/ansi_terminal.rs">
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/screen.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="572">
|
||||
<caret line="59" column="59" lean-forward="false" selection-start-line="59" selection-start-column="59" selection-end-line="59" selection-end-column="59" />
|
||||
<state relative-caret-position="1326">
|
||||
<caret line="51" column="11" lean-forward="false" selection-start-line="51" selection-start-column="11" selection-end-line="51" selection-end-column="11" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/cursor/ansi_cursor.rs">
|
||||
<entry file="file://$PROJECT_DIR$/src/terminal/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="16" column="1" lean-forward="true" selection-start-line="16" selection-start-column="1" selection-end-line="16" selection-end-column="1" />
|
||||
<state relative-caret-position="520">
|
||||
<caret line="20" column="0" lean-forward="false" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/mod.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="26">
|
||||
<caret line="1" column="17" lean-forward="false" selection-start-line="1" selection-start-column="17" selection-end-line="1" selection-end-column="17" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/bin.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="650">
|
||||
<caret line="25" column="25" lean-forward="false" selection-start-line="25" selection-start-column="25" selection-end-line="25" selection-end-column="25" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/alternate_screen.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1456">
|
||||
<caret line="56" column="7" lean-forward="false" selection-start-line="56" selection-start-column="7" selection-end-line="56" selection-end-column="7" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/examples/Crossterm 0.2.2 - New Version (Not finished)/terminal/raw_mode.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="604">
|
||||
<caret line="53" column="0" lean-forward="false" selection-start-line="53" selection-start-column="0" selection-end-line="53" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Cargo.toml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="287">
|
||||
<caret line="13" column="14" lean-forward="false" selection-start-line="13" selection-start-column="14" selection-end-line="13" selection-end-column="14" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="296">
|
||||
<caret line="14" column="8" lean-forward="false" selection-start-line="14" selection-start-column="8" selection-end-line="14" selection-end-column="8" />
|
||||
<folding>
|
||||
<element signature="e#380#381#0" expanded="true" />
|
||||
<element signature="e#419#420#0" expanded="true" />
|
||||
<element signature="e#838#839#0" expanded="true" />
|
||||
<element signature="e#894#895#0" expanded="true" />
|
||||
<element signature="e#488#1011#0" expanded="false" />
|
||||
<element signature="e#1152#2177#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/macros.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="52">
|
||||
<caret line="2" column="13" lean-forward="false" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/shared/raw.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="500">
|
||||
<caret line="94" column="4" lean-forward="false" selection-start-line="94" selection-start-column="4" selection-end-line="94" selection-end-column="4" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/kernel/unix_kernel/terminal.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="366">
|
||||
<caret line="86" column="31" lean-forward="false" selection-start-line="86" selection-start-column="31" selection-end-line="86" selection-end-column="31" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/context.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="474">
|
||||
<caret line="55" column="26" lean-forward="false" selection-start-line="55" selection-start-column="26" selection-end-line="55" selection-end-column="26" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/.cargo/registry/src/github.com-1ecc6299db9ec823/termios-0.3.0/src/lib.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="296">
|
||||
<caret line="170" column="11" lean-forward="false" selection-start-line="170" selection-start-column="11" selection-end-line="170" selection-end-column="11" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/state/commands/unix_command.rs">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="292">
|
||||
<caret line="101" column="27" lean-forward="false" selection-start-line="101" selection-start-column="27" selection-end-line="101" selection-end-column="27" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
|
@ -13,7 +13,15 @@
|
||||
|
||||
extern crate crossterm;
|
||||
|
||||
mod terminal;
|
||||
|
||||
use terminal::alternate_screen;
|
||||
use terminal::raw_mode;
|
||||
|
||||
use crossterm::cursor;
|
||||
|
||||
|
||||
fn main() {
|
||||
|
||||
raw_mode::print_wait_screen_on_alternate_window();
|
||||
}
|
@ -1,73 +1,82 @@
|
||||
// alternate screen is not working correctly currently
|
||||
extern crate crossterm;
|
||||
|
||||
use crossterm::Terminal;
|
||||
use crossterm::screen::AlternateScreen;
|
||||
use crossterm::cursor::cursor;
|
||||
use crossterm::terminal::{self, ClearType};
|
||||
|
||||
//extern crate crossterm;
|
||||
//
|
||||
//use crossterm::terminal::screen::{AlternateScreen, ToAlternateScreen, ToMainScreen};
|
||||
//use crossterm::cursor::cursor;
|
||||
//use crossterm::terminal::{self, ClearType};
|
||||
//
|
||||
//use std::io::{Write, stdout};
|
||||
//use std::{time, thread};
|
||||
//
|
||||
//fn print_wait_screen(screen: &mut Write)
|
||||
//{
|
||||
// terminal::terminal().clear(ClearType::All);
|
||||
// write!(screen,
|
||||
// "Welcome to the wait screen.\n\
|
||||
// Please wait a few seconds until we arrive back at the main screen.\n\
|
||||
// Seconds to Go: "
|
||||
// );
|
||||
//
|
||||
// let mut counter = 5;
|
||||
// // get cursor instance
|
||||
// let mut cursor = cursor();
|
||||
//
|
||||
// // loop until the counter hits 0
|
||||
// loop
|
||||
// {
|
||||
// // 1 second delay
|
||||
// thread::sleep(time::Duration::from_secs(1));
|
||||
// // decrement counter
|
||||
// counter -= 1;
|
||||
//
|
||||
// // print the current counter at the line of `Seconds to Go: {counter}`
|
||||
// cursor.goto(15,2).print(counter);
|
||||
//
|
||||
// if counter <= 0
|
||||
// {
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//pub fn with_alternate_screen_instance()
|
||||
//{
|
||||
// // create scope. If this scope ends the screen will be switched back to mainscreen.
|
||||
// // becouse `AlternateScreen` switches back to main screen when switching back.
|
||||
// {
|
||||
// // create new alternate screen instance and switch to the alternate screen.
|
||||
// let mut screen = AlternateScreen::from(stdout());
|
||||
//
|
||||
// // Print the wait screen.
|
||||
// print_wait_screen(&mut screen);
|
||||
// }
|
||||
//
|
||||
// println!("Whe are back at the main screen");
|
||||
//}
|
||||
//
|
||||
//pub fn manually_switch_to_alternate_screen()
|
||||
//{
|
||||
// // You can switch to alternate screen manually but if you forget to switch back your terminal may cause some undefined behavior.
|
||||
//
|
||||
// let mut screen = stdout();
|
||||
//
|
||||
// // switch to alternate screeen
|
||||
// write!(screen, "{}", ToAlternateScreen);
|
||||
// // load wait screen
|
||||
// print_wait_screen(&mut screen);
|
||||
// // switch back
|
||||
// write!(screen,"{}", ToMainScreen);
|
||||
// println!("Whe are back at the main screen");
|
||||
//
|
||||
//}
|
||||
use std::io::{Write, stdout};
|
||||
use std::{time, thread};
|
||||
|
||||
fn print_wait_screen(terminal: &Terminal)
|
||||
{
|
||||
terminal::terminal(&terminal).clear(ClearType::All);
|
||||
|
||||
let mut cursor = cursor(&terminal);
|
||||
cursor.goto(0,0);
|
||||
|
||||
{
|
||||
let mut screen_manager = terminal.screen_manager.lock().unwrap();
|
||||
{
|
||||
write!(screen_manager.stdout(),
|
||||
"Welcome to the wait screen.\n\
|
||||
Please wait a few seconds until we arrive back at the main screen.\n\
|
||||
Progress: "
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// print some progress example.
|
||||
for i in 1..5
|
||||
{
|
||||
// print the current counter at the line of `Seconds to Go: {counter}`
|
||||
cursor.goto(10,2).print(format!("{} of the 5 items processed", i));
|
||||
|
||||
// 1 second delay
|
||||
thread::sleep(time::Duration::from_secs(1));
|
||||
}
|
||||
}
|
||||
|
||||
pub fn print_wait_screen_on_alternate_window()
|
||||
{
|
||||
let terminal = Terminal::new();
|
||||
|
||||
// create scope. If this scope ends the screen will be switched back to mainscreen.
|
||||
// because `AlternateScreen` switches back to main screen when switching back.
|
||||
{
|
||||
// create new alternate screen instance and switch to the alternate screen.
|
||||
let mut screen = AlternateScreen::from(&terminal);
|
||||
|
||||
// Print the wait screen.
|
||||
print_wait_screen(&terminal);
|
||||
}
|
||||
|
||||
println!("Whe are back at the main screen");
|
||||
}
|
||||
|
||||
pub fn switch_between_main_and_alternate_screen()
|
||||
{
|
||||
let terminal = Terminal::new();
|
||||
let mut cursor = cursor(&terminal);
|
||||
|
||||
{
|
||||
// create new alternate screen instance and switch to the alternate screen.
|
||||
let mut screen = AlternateScreen::from(&terminal);
|
||||
cursor.goto(0,0);
|
||||
write!(screen, "we are at the alternate screen!");
|
||||
screen.flush();
|
||||
thread::sleep(time::Duration::from_secs(3));
|
||||
|
||||
screen.to_main();
|
||||
write!(screen, "we are at the main screen!");
|
||||
screen.flush();
|
||||
thread::sleep(time::Duration::from_secs(3));
|
||||
|
||||
screen.to_alternate();
|
||||
write!(screen, "we are at the alternate screen!");
|
||||
screen.flush();
|
||||
thread::sleep(time::Duration::from_secs(3));
|
||||
}
|
||||
|
||||
println!("Whe are back at the main screen");
|
||||
}
|
@ -1,5 +1,3 @@
|
||||
mod alternate_screen;
|
||||
mod raw_mode;
|
||||
|
||||
|
||||
pub mod alternate_screen;
|
||||
pub mod raw_mode;
|
||||
pub mod terminal;
|
@ -1 +1,60 @@
|
||||
extern crate crossterm;
|
||||
|
||||
use crossterm::Terminal;
|
||||
use crossterm::screen::AlternateScreen;
|
||||
use crossterm::cursor::cursor;
|
||||
use crossterm::terminal::{self, ClearType};
|
||||
|
||||
use std::io::{Write, stdout};
|
||||
use std::{time, thread};
|
||||
|
||||
use crossterm::raw::IntoRawMode;
|
||||
|
||||
// raw screen is not working correctly currently
|
||||
fn print_wait_screen(terminal: &Terminal)
|
||||
{
|
||||
terminal::terminal(&terminal).clear(ClearType::All);
|
||||
|
||||
let mut cursor = cursor(&terminal);
|
||||
cursor.goto(0,0);
|
||||
|
||||
{
|
||||
let mut screen_manager = terminal.screen_manager.lock().unwrap();
|
||||
{
|
||||
write!(screen_manager.stdout(),
|
||||
"Welcome to the wait screen.\n\
|
||||
Please wait a few seconds until we arrive back at the main screen.\n\
|
||||
Progress: "
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// print some progress example.
|
||||
for i in 1..5
|
||||
{
|
||||
// print the current counter at the line of `Seconds to Go: {counter}`
|
||||
cursor.goto(10,2).print(format!("{} of the 5 items processed", i));
|
||||
|
||||
// 1 second delay
|
||||
thread::sleep(time::Duration::from_secs(1));
|
||||
}
|
||||
}
|
||||
|
||||
pub fn print_wait_screen_on_alternate_window()
|
||||
{
|
||||
let terminal = Terminal::new();
|
||||
|
||||
// create scope. If this scope ends the screen will be switched back to mainscreen.
|
||||
// because `AlternateScreen` switches back to main screen when switching back.
|
||||
{
|
||||
let a = stdout().into_raw_mode(&terminal);
|
||||
|
||||
thread::sleep(time::Duration::from_secs(3));
|
||||
|
||||
|
||||
// // Print the wait screen.
|
||||
// print_wait_screen(&terminal);
|
||||
}
|
||||
|
||||
println!("Whe are back at the main screen");
|
||||
}
|
@ -4,7 +4,8 @@
|
||||
|
||||
extern crate crossterm;
|
||||
|
||||
use crossterm::terminal::{ Terminal, ClearType, terminal};
|
||||
use crossterm::Terminal;
|
||||
use crossterm::terminal::{ ClearType, terminal };
|
||||
use crossterm::cursor;
|
||||
|
||||
fn print_test_data()
|
||||
@ -17,8 +18,10 @@ fn print_test_data()
|
||||
/// Clear all lines in terminal | demonstration
|
||||
pub fn clear_all_lines()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
|
||||
print_test_data();
|
||||
|
||||
@ -29,13 +32,15 @@ pub fn clear_all_lines()
|
||||
/// Clear all lines from cursor position X:4, Y:4 down | demonstration
|
||||
pub fn clear_from_cursor_down()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
|
||||
print_test_data();
|
||||
|
||||
// Set terminal cursor position (see example for more info).
|
||||
cursor::cursor().goto(4,8);
|
||||
cursor::cursor(&term).goto(4,8);
|
||||
|
||||
// Clear all cells from current cursor position down.
|
||||
terminal.clear(ClearType::FromCursorDown);
|
||||
@ -44,13 +49,15 @@ pub fn clear_from_cursor_down()
|
||||
/// Clear all lines from cursor position X:4, Y:4 up | demonstration
|
||||
pub fn clear_from_cursor_up()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
|
||||
print_test_data();
|
||||
|
||||
// Set terminal cursor position (see example for more info).
|
||||
cursor::cursor().goto(4,4);
|
||||
cursor::cursor(&term).goto(4,4);
|
||||
|
||||
// Clear all cells from current cursor position down.
|
||||
terminal.clear(ClearType::FromCursorUp);
|
||||
@ -59,13 +66,15 @@ pub fn clear_from_cursor_up()
|
||||
/// Clear all lines from cursor position X:4, Y:4 up | demonstration
|
||||
pub fn clear_current_line()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
|
||||
print_test_data();
|
||||
|
||||
// Set terminal cursor position (see example for more info).
|
||||
cursor::cursor().goto(4,4);
|
||||
cursor::cursor(&term).goto(4,4);
|
||||
|
||||
// Clear current line cells.
|
||||
terminal.clear(ClearType::CurrentLine);
|
||||
@ -74,13 +83,15 @@ pub fn clear_current_line()
|
||||
/// Clear all lines from cursor position X:4, Y:7 up | demonstration
|
||||
pub fn clear_until_new_line()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
|
||||
print_test_data();
|
||||
|
||||
// Set terminal cursor position (see example for more info).
|
||||
cursor::cursor().goto(4,20);
|
||||
cursor::cursor(&term).goto(4,20);
|
||||
|
||||
// Clear all the cells until next line.
|
||||
terminal.clear(ClearType::UntilNewLine);
|
||||
@ -89,8 +100,10 @@ pub fn clear_until_new_line()
|
||||
/// Print the the current terminal size | demonstration.
|
||||
pub fn print_terminal_size()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
// Get terminal size
|
||||
let terminal_size = terminal.terminal_size();
|
||||
// Print results
|
||||
@ -100,7 +113,9 @@ pub fn print_terminal_size()
|
||||
/// Set the terminal size to width 10, height: 10 | demonstration.
|
||||
pub fn set_terminal_size()
|
||||
{
|
||||
let mut terminal = terminal();
|
||||
let term = Terminal::new();
|
||||
|
||||
let mut terminal = terminal(&term);
|
||||
|
||||
terminal.set_size(10,10);
|
||||
}
|
||||
@ -108,9 +123,11 @@ pub fn set_terminal_size()
|
||||
/// Scroll down 10 lines | demonstration.
|
||||
pub fn scroll_down()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
print_test_data();
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
// Scroll down 10 lines.
|
||||
terminal.scroll_down(10);
|
||||
}
|
||||
@ -118,10 +135,12 @@ pub fn scroll_down()
|
||||
/// Scroll down 10 lines | demonstration.
|
||||
pub fn scroll_up()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
print_test_data();
|
||||
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
// Scroll up 10 lines.
|
||||
terminal.scroll_up(10);
|
||||
}
|
||||
@ -129,8 +148,10 @@ pub fn scroll_up()
|
||||
/// Resize the terminal to X: 10, Y: 10 | demonstration.
|
||||
pub fn resize_terminal()
|
||||
{
|
||||
let term = Terminal::new();
|
||||
|
||||
// Get terminal
|
||||
let mut terminal = terminal();
|
||||
let mut terminal = terminal(&term);
|
||||
// Get terminal size
|
||||
terminal.set_size(10,10);
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ impl<'term> ITerminalCursor for AnsiCursor {
|
||||
fn goto(&self, x: u16, y: u16, terminal: &Terminal)
|
||||
{
|
||||
// ANSI codes are one-based. I want 0 based so we just need to increment and x,y.
|
||||
|
||||
let mut screen = terminal.screen_manager.lock().unwrap();
|
||||
{
|
||||
screen.write_ansi(format!(csi!("{};{}H"), y + 1, x +1));
|
||||
|
@ -44,62 +44,64 @@ pub fn pos(terminal: &Terminal) -> (u16,u16)
|
||||
{
|
||||
use std::io::{ Write,Read };
|
||||
|
||||
let mut context = Context::new();
|
||||
{
|
||||
let mut command = NoncanonicalModeCommand::new(&mut context);
|
||||
|
||||
let mut command = NoncanonicalModeCommand::new(&terminal.context);
|
||||
command.0.execute(&terminal);
|
||||
|
||||
// This code is original written by term_cursor credits to them.
|
||||
// This code is original written by term_cursor credits to them.
|
||||
|
||||
use std::io;
|
||||
let mut std = io::stdout();
|
||||
// Write command
|
||||
std.write(b"\x1B[6n");
|
||||
std.flush();
|
||||
use std::io;
|
||||
let mut std = io::stdout();
|
||||
// Write command
|
||||
std.write(b"\x1B[6n");
|
||||
std.flush();
|
||||
|
||||
// Read back result
|
||||
let mut buf = [0u8; 2];
|
||||
// Expect `ESC[`
|
||||
io::stdin().read_exact(&mut buf);
|
||||
if buf[0] != 0x1B || buf[1] as char != '[' {
|
||||
return (0, 0);
|
||||
}
|
||||
|
||||
// Read rows and cols through a ad-hoc integer parsing function
|
||||
let read_num = || -> (i32, char) {
|
||||
let mut num = 0;
|
||||
let mut c;
|
||||
|
||||
loop {
|
||||
let mut buf = [0u8; 1];
|
||||
io::stdin().read_exact(&mut buf);
|
||||
c = buf[0] as char;
|
||||
if let Some(d) = c.to_digit(10) {
|
||||
num = if num == 0 { 0 } else { num * 10 };
|
||||
num += d as i32;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
(num, c)
|
||||
};
|
||||
|
||||
// Read rows and expect `;`
|
||||
let (rows, c) = read_num();
|
||||
|
||||
if c != ';' {
|
||||
return (0, 0);
|
||||
}
|
||||
|
||||
// Read cols
|
||||
let (cols, c) = read_num();
|
||||
|
||||
// Expect `R`
|
||||
let res = if c == 'R' { (cols as u16, rows as u16) } else { return (0, 0) };
|
||||
|
||||
res
|
||||
// Read back result
|
||||
let mut buf = [0u8; 2];
|
||||
// Expect `ESC[`
|
||||
io::stdin().read_exact(&mut buf);
|
||||
if buf[0] != 0x1B || buf[1] as char != '[' {
|
||||
return (0, 0);
|
||||
}
|
||||
|
||||
// Read rows and cols through a ad-hoc integer parsing function
|
||||
let read_num = || -> (i32, char) {
|
||||
let mut num = 0;
|
||||
let mut c;
|
||||
|
||||
loop {
|
||||
let mut buf = [0u8; 1];
|
||||
io::stdin().read_exact(&mut buf);
|
||||
c = buf[0] as char;
|
||||
if let Some(d) = c.to_digit(10) {
|
||||
num = if num == 0 { 0 } else { num * 10 };
|
||||
num += d as i32;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
(num, c)
|
||||
};
|
||||
|
||||
// Read rows and expect `;`
|
||||
let (rows, c) = read_num();
|
||||
|
||||
if c != ';' {
|
||||
return (0, 0);
|
||||
}
|
||||
|
||||
// Read cols
|
||||
let (cols, c) = read_num();
|
||||
|
||||
// Expect `R`
|
||||
let res = if c == 'R' { (cols as u16, rows as u16) } else { return (0, 0) };
|
||||
|
||||
let mut context = terminal.context.lock().unwrap();
|
||||
{
|
||||
context.undo_state(command.1, terminal);
|
||||
}
|
||||
res
|
||||
}
|
||||
|
||||
/// Set the terminal mode to the given mode.
|
||||
|
@ -13,10 +13,13 @@ pub mod style;
|
||||
pub mod terminal;
|
||||
pub mod manager;
|
||||
|
||||
pub use shared::{screen, raw};
|
||||
|
||||
use shared::traits::{Construct};
|
||||
pub use state::{ Context };
|
||||
pub use manager::manager::{ ScreenManager };
|
||||
pub use manager::terminal::{ Terminal };
|
||||
pub use shared::terminal::Terminal;
|
||||
|
||||
|
||||
#[cfg(windows)]
|
||||
extern crate winapi;
|
||||
|
@ -4,7 +4,7 @@ use super::IScreenManager;
|
||||
|
||||
pub struct AnsiScreenManager<Output:Write>
|
||||
{
|
||||
is_alternate_screen: bool,
|
||||
pub is_alternate_screen: bool,
|
||||
output: Output,
|
||||
}
|
||||
|
||||
@ -15,28 +15,33 @@ impl<Output :Write> IScreenManager<Output> for AnsiScreenManager<Output>
|
||||
return &mut self.output
|
||||
}
|
||||
|
||||
fn register_output(&mut self, output: Output, is_alternate_screen: bool)
|
||||
fn toggle_is_alternate_screen(&mut self, is_alternate_screen: bool)
|
||||
{
|
||||
self.output = output;
|
||||
self.is_alternate_screen = is_alternate_screen;
|
||||
}
|
||||
|
||||
fn write_ansi(&mut self, string: String)
|
||||
{
|
||||
match self.is_alternate_screen
|
||||
{
|
||||
true => write!(self.output, "{}", string),
|
||||
false => write!(io::stdout(), "{}", string),
|
||||
};
|
||||
write!(self.output, "{}", string);
|
||||
self.flush();
|
||||
// println!("test");
|
||||
// match self.is_alternate_screen
|
||||
// {
|
||||
// true => ,
|
||||
// false => write!(io::stdout(), "{}", string),
|
||||
// };
|
||||
}
|
||||
|
||||
fn write_ansi_str(&mut self, string: &str)
|
||||
{
|
||||
match self.is_alternate_screen
|
||||
{
|
||||
true => write!(self.output, "{}", string),
|
||||
false => write!(io::stdout(), "{}", string),
|
||||
};
|
||||
write!(self.output, "{}", string);
|
||||
self.flush();
|
||||
// println!("test");
|
||||
// match self.is_alternate_screen
|
||||
// {
|
||||
// true => write!(self.output, "{}", string),
|
||||
// false => write!(io::stdout(), "{}", string),
|
||||
// };
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,9 +27,9 @@ impl ScreenManager
|
||||
self.screen_manager.stdout()
|
||||
}
|
||||
|
||||
pub fn register_output(&mut self, output: Box<Write>, is_alternate_screen: bool)
|
||||
pub fn toggle_is_alternate_screen(&mut self,is_alternate_screen: bool)
|
||||
{
|
||||
self.screen_manager.register_output(output,is_alternate_screen);
|
||||
self.screen_manager.toggle_is_alternate_screen(is_alternate_screen);
|
||||
}
|
||||
|
||||
pub fn write_ansi(&mut self, string: String)
|
||||
|
@ -1,5 +1,4 @@
|
||||
pub mod manager;
|
||||
pub mod terminal;
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
mod win_manager;
|
||||
@ -14,7 +13,7 @@ pub use self::manager::{ ScreenManager };
|
||||
pub trait IScreenManager<Output>
|
||||
{
|
||||
fn stdout(&mut self) -> &mut Output;
|
||||
fn register_output(&mut self, output: Output, is_alternate_screen: bool);
|
||||
fn toggle_is_alternate_screen(&mut self, is_alternate_screen: bool);
|
||||
fn write_ansi(&mut self, string: String);
|
||||
fn write_ansi_str(&mut self, string: &str);
|
||||
}
|
@ -4,3 +4,6 @@
|
||||
pub mod macros;
|
||||
pub mod traits;
|
||||
pub mod functions;
|
||||
pub mod terminal;
|
||||
pub mod screen;
|
||||
pub mod raw;
|
104
src/shared/raw.rs
Normal file
104
src/shared/raw.rs
Normal file
@ -0,0 +1,104 @@
|
||||
//! This module is used for enabling and disabling raw mode for the terminal.
|
||||
//!
|
||||
//! What exactly is raw state:
|
||||
//! - No line buffering.
|
||||
//! Normally the terminals uses line buffering. This means that the input will be send to the terminal line by line.
|
||||
//! With raw mode the input will be send one byte at a time.
|
||||
//! - Input
|
||||
//! All input has to be written manually by the programmer.
|
||||
//! - Characters
|
||||
//! The characters are not processed by the terminal driver, but are sent straight through.
|
||||
//! Special character have no meaning, like backspace will not be interpret as backspace but instead will be directly send to the terminal.
|
||||
//!
|
||||
//! With these modes you can easier design the terminal screen.
|
||||
//!
|
||||
//! # Example
|
||||
//!
|
||||
//! ```rust
|
||||
//! to be implemented
|
||||
//!
|
||||
//! ```
|
||||
|
||||
#[cfg(not(windows))]
|
||||
use super::super::state::commands::unix_command::EnableRawModeCommand;
|
||||
#[cfg(windows)]
|
||||
use state::commands::win_commands::EnableRawModeCommand;
|
||||
|
||||
use { Terminal };
|
||||
use state::commands::IContextCommand;
|
||||
|
||||
use std::io::{ self, Write};
|
||||
|
||||
/// A wrapper for the raw terminal state. Which can be used to write to.
|
||||
pub struct RawTerminal<'a>
|
||||
{
|
||||
terminal : &'a Terminal,
|
||||
command_id: u16,
|
||||
}
|
||||
|
||||
/// Trait withs contains a method for switching into raw mode.
|
||||
pub trait IntoRawMode<'a>: Write + Sized
|
||||
{
|
||||
fn into_raw_mode(&self, terminal: &'a Terminal) -> io::Result<RawTerminal<'a>>;
|
||||
}
|
||||
|
||||
//impl<'a> IntoRawMode<'a> for RawTerminal<'a>
|
||||
//{
|
||||
// /// Switch to raw mode.
|
||||
// ///
|
||||
// /// Raw mode means that input (stdin) won't be printed it will instead have to be written manually by
|
||||
// /// the program. The input isn't canonicalised or line buffered (that is, you can
|
||||
// /// read from input(stdin) one byte of a time).
|
||||
// fn into_raw_mode(self, terminal: &'a Terminal) -> io::Result<RawTerminal>
|
||||
// {
|
||||
// let (mut command, command_id) = EnableRawModeCommand::new(&terminal.context);
|
||||
// let success = command.execute(&terminal);
|
||||
//
|
||||
// if success
|
||||
// {
|
||||
// Ok(RawTerminal { terminal: terminal, command_id: command_id})
|
||||
//
|
||||
// }else { panic!("cannot move into raw mode") }
|
||||
// }
|
||||
//}
|
||||
|
||||
impl <'a, W: Write> IntoRawMode<'a> for W
|
||||
{
|
||||
fn into_raw_mode(&self, terminal: &'a Terminal) -> io::Result<RawTerminal<'a>> {
|
||||
let (mut command, command_id) = EnableRawModeCommand::new(&terminal.context);
|
||||
let success = command.execute(&terminal);
|
||||
|
||||
if success
|
||||
{
|
||||
Ok(RawTerminal { terminal: &terminal, command_id: command_id})
|
||||
}else { panic!("cannot move into raw mode") }
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Write for RawTerminal<'a> {
|
||||
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
|
||||
let mut screen = self.terminal.screen_manager.lock().unwrap();
|
||||
{
|
||||
screen.stdout().write(buf)
|
||||
}
|
||||
}
|
||||
|
||||
fn flush(&mut self) -> io::Result<()> {
|
||||
let mut screen = self.terminal.screen_manager.lock().unwrap();
|
||||
{
|
||||
screen.stdout().flush()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// If an instance of `RawTerminal` will be dropped all terminal changes that are made will be undone.
|
||||
impl <'a> Drop for RawTerminal<'a>
|
||||
{
|
||||
fn drop(&mut self)
|
||||
{
|
||||
let mut context = self.terminal.context.lock().unwrap();
|
||||
{
|
||||
context.undo_state(self.command_id, &self.terminal);
|
||||
}
|
||||
}
|
||||
}
|
@ -56,11 +56,6 @@ pub struct AlternateScreen<'term> {
|
||||
impl<'term> AlternateScreen<'term> {
|
||||
pub fn from(output: &'term Terminal) -> Self {
|
||||
get_to_alternate_screen_command().execute(&output);
|
||||
//
|
||||
// let mut screen = output.screen_manager.lock().unwrap();
|
||||
// {
|
||||
// screen.register_output(Box::from(o), true);
|
||||
// }
|
||||
AlternateScreen { term: output }
|
||||
}
|
||||
|
@ -1,8 +1,7 @@
|
||||
use std::sync::Mutex;
|
||||
use std::rc::Rc;
|
||||
|
||||
use { Context };
|
||||
use super::super::manager::ScreenManager;
|
||||
use { Context, ScreenManager};
|
||||
|
||||
//use super::super::terminal;
|
||||
//use super::super::cursor;
|
||||
@ -13,7 +12,7 @@ use std::fmt;
|
||||
pub struct Terminal
|
||||
{
|
||||
pub screen_manager: Rc<Mutex<ScreenManager>>,
|
||||
context: Context
|
||||
pub context: Mutex<Context>
|
||||
}
|
||||
|
||||
impl Terminal
|
||||
@ -22,7 +21,7 @@ impl Terminal
|
||||
{
|
||||
Terminal {
|
||||
screen_manager: Rc::new(Mutex::new(ScreenManager::new())),
|
||||
context: Context::new()
|
||||
context: Mutex::new(Context::new())
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
//!
|
||||
//! See the `Context` struct where we store the commands for more info.
|
||||
|
||||
use rand;
|
||||
use std::sync::Mutex;
|
||||
|
||||
#[cfg(unix)]
|
||||
pub mod unix_command;
|
||||
@ -39,13 +39,7 @@ pub trait ICommand
|
||||
|
||||
pub trait IContextCommand
|
||||
{
|
||||
fn new(context: &mut Context) -> (Box<Self>, i16) where Self: Sized;
|
||||
fn new(context: &Mutex<Context>) -> (Box<Self>, u16) where Self: Sized;
|
||||
fn execute(&mut self, terminal: &Terminal) -> bool;
|
||||
fn undo(&mut self, terminal: &Terminal) -> bool;
|
||||
}
|
||||
|
||||
/// This generates an random key for the `ContextCommand`.
|
||||
/// So that we can identify the `ContextCommand` in an list of commands.
|
||||
fn generate_key() -> i16 {
|
||||
rand::random::<i16>()
|
||||
}
|
@ -17,6 +17,7 @@ impl ICommand for ToAlternateScreenBufferCommand
|
||||
let mut screen = terminal.screen_manager.lock().unwrap();
|
||||
{
|
||||
screen.write_ansi_str(csi!("?1049h"));
|
||||
screen.toggle_is_alternate_screen(true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -26,6 +27,7 @@ impl ICommand for ToAlternateScreenBufferCommand
|
||||
let mut screen = terminal.screen_manager.lock().unwrap();
|
||||
{
|
||||
screen.write_ansi_str(csi!("?1049l"));
|
||||
screen.toggle_is_alternate_screen(false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -7,20 +7,26 @@ use termios::{Termios, tcsetattr, TCSAFLUSH, ICANON, ECHO, CREAD};
|
||||
|
||||
const FD_STDIN: ::std::os::unix::io::RawFd = 1;
|
||||
|
||||
use std::sync::Mutex;
|
||||
|
||||
/// This command is used for switching to NoncanonicalMode.
|
||||
#[derive(Clone, Copy)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct NoncanonicalModeCommand
|
||||
{
|
||||
key: i16
|
||||
key: u16
|
||||
}
|
||||
|
||||
impl IContextCommand for NoncanonicalModeCommand
|
||||
{
|
||||
fn new(context: &mut Context) -> (Box<NoncanonicalModeCommand>, i16) {
|
||||
let key = super::generate_key();
|
||||
let command = NoncanonicalModeCommand { key: key };
|
||||
context.register_change(Box::from(command), key);
|
||||
(Box::from(command),key)
|
||||
fn new(context: &Mutex<Context>) -> (Box<NoncanonicalModeCommand>, u16) {
|
||||
let key = 1;
|
||||
|
||||
let mut context = context.lock().unwrap();
|
||||
{
|
||||
let command = NoncanonicalModeCommand { key: key };
|
||||
context.register_change(Box::from(command), key);
|
||||
(Box::from(command),key)
|
||||
}
|
||||
}
|
||||
|
||||
fn execute(&mut self, terminal: &Terminal) -> bool
|
||||
@ -64,28 +70,35 @@ impl IContextCommand for NoncanonicalModeCommand
|
||||
}
|
||||
|
||||
/// This command is used for enabling and disabling raw mode for the terminal.
|
||||
#[derive(Clone, Copy)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct EnableRawModeCommand
|
||||
{
|
||||
original_mode: Option<Termios>,
|
||||
key: i16
|
||||
command_id: u16
|
||||
}
|
||||
|
||||
impl IContextCommand for EnableRawModeCommand
|
||||
{
|
||||
fn new(context: &mut Context) -> (Box<EnableRawModeCommand>, i16) {
|
||||
let key = super::generate_key();
|
||||
let command = EnableRawModeCommand { original_mode: None, key: key };
|
||||
context.register_change(Box::from(command), key);
|
||||
(Box::from(command),key)
|
||||
fn new(context: &Mutex<Context>) -> (Box<EnableRawModeCommand>, u16) {
|
||||
let key = 2;
|
||||
|
||||
let mut context = context.lock().unwrap();
|
||||
{
|
||||
let command = EnableRawModeCommand { original_mode: None, command_id: key };
|
||||
context.register_change(Box::from(command), key);
|
||||
(Box::from(command), key)
|
||||
}
|
||||
}
|
||||
|
||||
fn execute(&mut self, terminal: &Terminal) -> bool
|
||||
{
|
||||
if let Ok(original_mode) = terminal::get_terminal_mode()
|
||||
let original_mode = terminal::get_terminal_mode();
|
||||
|
||||
if let Ok(original_mode) = original_mode
|
||||
{
|
||||
panic!("setting {:?}", original_mode);
|
||||
self.original_mode = Some(original_mode);
|
||||
let mut new_mode = self.original_mode.unwrap();
|
||||
let mut new_mode = original_mode;
|
||||
terminal::make_raw(&mut new_mode);
|
||||
terminal::set_terminal_mode(&new_mode);
|
||||
true
|
||||
@ -97,9 +110,11 @@ impl IContextCommand for EnableRawModeCommand
|
||||
|
||||
fn undo(&mut self, terminal: &Terminal) -> bool
|
||||
{
|
||||
if let Ok(original_mode) = terminal::get_terminal_mode()
|
||||
panic!("undoing {:?}", self.original_mode);
|
||||
if let Some(original_mode) = self.original_mode
|
||||
{
|
||||
let result = terminal::set_terminal_mode(&self.original_mode.unwrap());
|
||||
|
||||
let result = terminal::set_terminal_mode(&original_mode);
|
||||
|
||||
match result
|
||||
{
|
||||
|
@ -9,6 +9,8 @@ use winapi::um::wincon;
|
||||
use winapi::um::wincon::{ENABLE_VIRTUAL_TERMINAL_PROCESSING ,SMALL_RECT, COORD, CHAR_INFO};
|
||||
use std::mem;
|
||||
|
||||
use std::sync::Mutex;
|
||||
|
||||
/// This command is used for enabling and disabling ANSI code support for windows systems,
|
||||
/// For more info check: https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences.
|
||||
#[derive(Clone, Copy)]
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
use std::collections::HashMap;
|
||||
use super::commands::IContextCommand;
|
||||
|
||||
use Terminal;
|
||||
/// Struct that stores the changed states of the terminal.
|
||||
pub struct Context
|
||||
{
|
||||
changed_states: HashMap<i16, Box<IContextCommand>>,
|
||||
changed_states: HashMap<u16, Box<IContextCommand>>,
|
||||
}
|
||||
|
||||
impl Context
|
||||
@ -19,9 +19,9 @@ impl Context
|
||||
}
|
||||
}
|
||||
|
||||
/// Restore all changes that are made to the terminal.
|
||||
pub fn restore_changes(&mut self)
|
||||
{
|
||||
// /// Restore all changes that are made to the terminal.
|
||||
// pub fn restore_changes(&mut self)
|
||||
// {
|
||||
// use std::iter::FromIterator;
|
||||
//
|
||||
// let mut buffer = Vec::new();
|
||||
@ -35,10 +35,10 @@ impl Context
|
||||
// {
|
||||
// buffer[i].1.undo(self);
|
||||
// }
|
||||
}
|
||||
// }
|
||||
|
||||
/// Register new changed state with the given key.
|
||||
pub fn register_change(&mut self, change: Box<IContextCommand>, key: i16)
|
||||
pub fn register_change(&mut self, change: Box<IContextCommand>, key: u16)
|
||||
{
|
||||
if !self.changed_states.contains_key(&key)
|
||||
{
|
||||
@ -47,11 +47,16 @@ impl Context
|
||||
}
|
||||
|
||||
/// Undo an specific state by the given state key.
|
||||
pub fn undo_state(&mut self, state_key: i16)
|
||||
pub fn undo_state(&mut self, state_key: u16, terminal: &Terminal)
|
||||
{
|
||||
if self.changed_states.contains_key(&state_key)
|
||||
{
|
||||
self.changed_states.remove(&state_key);
|
||||
{
|
||||
let mut command = self.changed_states.get_mut(&state_key).unwrap();
|
||||
command.undo(&terminal);
|
||||
}
|
||||
&self.changed_states.remove(&state_key);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,9 +19,6 @@ pub mod terminal;
|
||||
mod winapi_terminal;
|
||||
mod ansi_terminal;
|
||||
|
||||
pub mod screen;
|
||||
mod raw;
|
||||
|
||||
/// Enum that can be used for the kind of clearing that can be done in the terminal.
|
||||
pub enum ClearType {
|
||||
All,
|
||||
|
@ -1,82 +0,0 @@
|
||||
////! This module is used for enabling and disabling raw mode for the terminal.
|
||||
////!
|
||||
////! What exactly is raw state:
|
||||
////! - No line buffering.
|
||||
////! Normally the terminals uses line buffering. This means that the input will be send to the terminal line by line.
|
||||
////! With raw mode the input will be send one byte at a time.
|
||||
////! - Input
|
||||
////! All input has to be written manually by the programmer.
|
||||
////! - Characters
|
||||
////! The characters are not processed by the terminal driver, but are sent straight through.
|
||||
////! Special character have no meaning, like backspace will not be interpret as backspace but instead will be directly send to the terminal.
|
||||
////!
|
||||
////! With these modes you can easier design the terminal screen.
|
||||
////!
|
||||
////! # Example
|
||||
////!
|
||||
////! ```rust
|
||||
////! to be implemented
|
||||
////!
|
||||
////! ```
|
||||
//
|
||||
//#[cfg(not(windows))]
|
||||
//use state::commands::unix_command::EnableRawModeCommand;
|
||||
//#[cfg(windows)]
|
||||
//use state::commands::win_commands::EnableRawModeCommand;
|
||||
//
|
||||
//use Context;
|
||||
//use state::commands::IContextCommand;
|
||||
//
|
||||
//use std::io::{ self, Write};
|
||||
//
|
||||
///// A wrapper for the raw terminal state. Which can be used to write to.
|
||||
//pub struct RawTerminal<'a, W: Write>
|
||||
//{
|
||||
// output: W,
|
||||
// context : &'a mut Context
|
||||
//}
|
||||
//
|
||||
///// Trait withs contains a method for switching into raw mode.
|
||||
//pub trait IntoRawMode: Write + Sized
|
||||
//{
|
||||
// fn into_raw_mode<'a>(self, context: &'a mut Context) -> io::Result<RawTerminal<Self>>;
|
||||
//}
|
||||
//
|
||||
//impl<W: Write> IntoRawMode for W
|
||||
//{
|
||||
// /// Switch to raw mode.
|
||||
// ///
|
||||
// /// Raw mode means that input (stdin) won't be printed it will instead have to be written manually by
|
||||
// /// the program. The input isn't canonicalised or line buffered (that is, you can
|
||||
// /// read from input(stdin) one byte of a time).
|
||||
// fn into_raw_mode<'a>(self, context: &'a mut Context) -> io::Result<RawTerminal<Self>>
|
||||
// {
|
||||
// let (mut command, _) = EnableRawModeCommand::new(context);
|
||||
// let success = command.execute(&context);
|
||||
//
|
||||
// if success
|
||||
// {
|
||||
// Ok(RawTerminal { output: self, context: context})
|
||||
//
|
||||
// }else { panic!("cannot move into raw mode") }
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//impl<'a, W: Write> Write for RawTerminal<'a, W> {
|
||||
// fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
|
||||
// self.output.write(buf)
|
||||
// }
|
||||
//
|
||||
// fn flush(&mut self) -> io::Result<()> {
|
||||
// self.output.flush()
|
||||
// }
|
||||
//}
|
||||
//
|
||||
///// If an instance of `RawTerminal` will be dropped all terminal changes that are made will be undone.
|
||||
//impl <'a, W: Write> Drop for RawTerminal<'a, W>
|
||||
//{
|
||||
// fn drop(&mut self)
|
||||
// {
|
||||
// self.context.restore_changes();
|
||||
// }
|
||||
//}
|
@ -3,7 +3,7 @@
|
||||
|
||||
use super::*;
|
||||
use Construct;
|
||||
use super::super::manager::terminal;
|
||||
use super::super::shared::terminal;
|
||||
|
||||
/// Struct that stores an specific platform implementation for terminal related actions.
|
||||
pub struct Terminal<'terminal> {
|
||||
|
Loading…
Reference in New Issue
Block a user