├── .appveyor.yml ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .travis.yml ├── Cargo.lock ├── Cargo.toml ├── KEYS.md ├── LICENSE ├── README.md └── src ├── config.rs ├── file.rs ├── indent.rs ├── keybinds.rs ├── main.rs ├── state.rs └── terminal ├── base.rs ├── mod.rs ├── unix.rs └── win32.rs /.appveyor.yml: -------------------------------------------------------------------------------- 1 | # Appveyor configuration template for Rust using rustup for Rust installation 2 | # https://github.com/starkat99/appveyor-rust 3 | 4 | ## Operating System (VM environment) ## 5 | 6 | # Rust needs at least Visual Studio 2013 Appveyor OS for MSVC targets. 7 | os: Visual Studio 2015 8 | 9 | ## Build Matrix ## 10 | 11 | # This configuration will setup a build for each channel & target combination (12 windows 12 | # combinations in all). 13 | # 14 | # There are 3 channels: stable, beta, and nightly. 15 | # 16 | # Alternatively, the full version may be specified for the channel to build using that specific 17 | # version (e.g. channel: 1.5.0) 18 | # 19 | # The values for target are the set of windows Rust build targets. Each value is of the form 20 | # 21 | # ARCH-pc-windows-TOOLCHAIN 22 | # 23 | # Where ARCH is the target architecture, either x86_64 or i686, and TOOLCHAIN is the linker 24 | # toolchain to use, either msvc or gnu. See https://www.rust-lang.org/downloads.html#win-foot for 25 | # a description of the toolchain differences. 26 | # See https://github.com/rust-lang-nursery/rustup.rs/#toolchain-specification for description of 27 | # toolchains and host triples. 28 | # 29 | # Comment out channel/target combos you do not wish to build in CI. 30 | # 31 | # You may use the `cargoflags` and `RUSTFLAGS` variables to set additional flags for cargo commands 32 | # and rustc, respectively. For instance, you can uncomment the cargoflags lines in the nightly 33 | # channels to enable unstable features when building for nightly. Or you could add additional 34 | # matrix entries to test different combinations of features. 35 | environment: 36 | matrix: 37 | 38 | ### MSVC Toolchains ### 39 | 40 | # Stable 64-bit MSVC 41 | - channel: stable 42 | target: x86_64-pc-windows-msvc 43 | arch: x64 44 | # Stable 32-bit MSVC 45 | - channel: stable 46 | target: i686-pc-windows-msvc 47 | arch: x86 48 | # Beta 64-bit MSVC 49 | - channel: beta 50 | target: x86_64-pc-windows-msvc 51 | # Beta 32-bit MSVC 52 | - channel: beta 53 | target: i686-pc-windows-msvc 54 | # Nightly 64-bit MSVC 55 | - channel: nightly 56 | target: x86_64-pc-windows-msvc 57 | #cargoflags: --features "unstable" 58 | # Nightly 32-bit MSVC 59 | - channel: nightly 60 | target: i686-pc-windows-msvc 61 | #cargoflags: --features "unstable" 62 | 63 | ### Allowed failures ### 64 | 65 | # See Appveyor documentation for specific details. In short, place any channel or targets you wish 66 | # to allow build failures on (usually nightly at least is a wise choice). This will prevent a build 67 | # or test failure in the matching channels/targets from failing the entire build. 68 | matrix: 69 | allow_failures: 70 | - channel: nightly 71 | 72 | # If you only care about stable channel build failures, uncomment the following line: 73 | #- channel: beta 74 | 75 | ## Install Script ## 76 | 77 | # This is the most important part of the Appveyor configuration. This installs the version of Rust 78 | # specified by the 'channel' and 'target' environment variables from the build matrix. This uses 79 | # rustup to install Rust. 80 | # 81 | # For simple configurations, instead of using the build matrix, you can simply set the 82 | # default-toolchain and default-host manually here. 83 | install: 84 | - appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe 85 | - rustup-init -yv --default-toolchain %channel% --default-host %target% 86 | - set PATH=%PATH%;%USERPROFILE%\.cargo\bin 87 | - rustc -vV 88 | - cargo -vV 89 | 90 | ## Build Script ## 91 | 92 | # 'cargo test' takes care of building for us, so disable Appveyor's build stage. This prevents 93 | # the "directory does not contain a project or solution file" error. 94 | # build: false 95 | build_script: 96 | - cargo build --release 97 | - mkdir dist 98 | - mv target\release\mfte.exe dist\mfte-%arch%.exe 99 | 100 | # Uses 'cargo test' to run tests and build. Alternatively, the project may call compiled programs 101 | #directly or perform other testing commands. Rust will automatically be placed in the PATH 102 | # environment variable. 103 | test_script: 104 | - cargo test --verbose %cargoflags% 105 | 106 | artifacts: 107 | - path: dist\*.exe 108 | name: distributable 109 | 110 | ## GitHub Releases Deployment ## 111 | deploy: 112 | description: 'mfte' 113 | provider: GitHub 114 | auth_token: 115 | secure: CyVbWhf9A9aWuXsJALK7rDaL8N23uVRoU0X/YxYsHBK++/kY21YDEPvFTE197vCf 116 | artifact: distributable 117 | on: 118 | appveyor_repo_tag: true 119 | channel: stable 120 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.yml] 12 | indent_size = 2 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | **/*.rs.bk 3 | /dist/ 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: 2 | - linux 3 | - osx 4 | language: rust 5 | rust: 6 | - stable 7 | - beta 8 | # - nightly 9 | before_script: rvm get stable 10 | jobs: 11 | include: 12 | - stage: deploy 13 | os: linux 14 | rust: stable 15 | script: &1 16 | - cargo build --release 17 | - mkdir dist 18 | - mv target/release/mfte dist/mfte-$TRAVIS_OS_NAME 19 | deploy: &2 20 | provider: releases 21 | skip_cleanup: true 22 | file_glob: true 23 | api_key: 24 | secure: hh84v6fwvW3tFYhZPclS3sQDEDlL5fwZUXt9qVRIzVZPYqFvVFijWfQX6P5NLuBqeNmmLXw4GhFGHY8EIqcpm/VhlouZ9A3NxXVQy5qudyTMJSMZu1ex5sRtn26yDB/eoxuDlIXNONxiaNhzThHysY7lg0FCSW6XMDqmmZxrkrjvkofVgJHmufdZZKv2hp5Vh0pLVv2MRoNuKQ1d+2KVlu5U/veH6gEnw6Ocmk0QGXJy3DzL1EGcEKdZtjPMqnR0+CoxsHgQEWALQbsmFOYYZ8SRLwd7SSi5PddgFZ3GycAWeCPaWaJZxKPv630G14LinByo6QQdTpaQGgFfm14v33ztNor/s23CpOTtTxUwgY6RAC60Hh2C3AfsBbKDF/RXj6MJBWRzvJ2+t1HuPDcUXL+bKqzUbywfdUBqh7Erca4sjpXUkoHng9U8eWjp9YVK6hOeHtbHU/COIUvY3i9cBLb4S33hTo8+4pR6LHuWPSwQkX8WT1B8IR5JAIOMsQN865pLJ8qkupwA7mXJZf6tOD2oVTqMRN1w5anYobibcLNp8OkFmsXIfJ6SyYbL843G9n8NDKpw561M++TILYAUG+BFlc4GeKBAHfi3Hhy3IB612Z0qbz9VjgVzK5f3uq3ccuvvO/xakQn7R6vXEHXO65grjU/EpJgJuEfUeXLbkk0= 25 | file: dist/* 26 | on: 27 | repo: mathphreak/mfte 28 | tags: true 29 | - stage: deploy 30 | os: osx 31 | rust: stable 32 | script: *1 33 | deploy: *2 34 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | [root] 2 | name = "mfte" 3 | version = "0.3.0" 4 | dependencies = [ 5 | "clipboard 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 6 | "editorconfig 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 7 | "enum_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 8 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 9 | "macro-attr 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 10 | "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 11 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 12 | ] 13 | 14 | [[package]] 15 | name = "aho-corasick" 16 | version = "0.6.3" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | dependencies = [ 19 | "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 20 | ] 21 | 22 | [[package]] 23 | name = "argparse" 24 | version = "0.2.1" 25 | source = "registry+https://github.com/rust-lang/crates.io-index" 26 | 27 | [[package]] 28 | name = "backtrace" 29 | version = "0.3.3" 30 | source = "registry+https://github.com/rust-lang/crates.io-index" 31 | dependencies = [ 32 | "backtrace-sys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 33 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 34 | "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 35 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 36 | "libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 37 | "rustc-demangle 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 38 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 39 | ] 40 | 41 | [[package]] 42 | name = "backtrace-sys" 43 | version = "0.1.15" 44 | source = "registry+https://github.com/rust-lang/crates.io-index" 45 | dependencies = [ 46 | "cc 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 47 | "libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 48 | ] 49 | 50 | [[package]] 51 | name = "block" 52 | version = "0.1.6" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | 55 | [[package]] 56 | name = "cc" 57 | version = "1.0.1" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | 60 | [[package]] 61 | name = "cfg-if" 62 | version = "0.1.2" 63 | source = "registry+https://github.com/rust-lang/crates.io-index" 64 | 65 | [[package]] 66 | name = "clipboard" 67 | version = "0.4.2" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | dependencies = [ 70 | "clipboard-win 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 71 | "objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 72 | "objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 73 | "objc_id 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 74 | "x11-clipboard 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 75 | ] 76 | 77 | [[package]] 78 | name = "clipboard-win" 79 | version = "2.0.1" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | dependencies = [ 82 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 83 | "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 84 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 85 | ] 86 | 87 | [[package]] 88 | name = "dbghelp-sys" 89 | version = "0.2.0" 90 | source = "registry+https://github.com/rust-lang/crates.io-index" 91 | dependencies = [ 92 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 93 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 94 | ] 95 | 96 | [[package]] 97 | name = "editorconfig" 98 | version = "1.0.0" 99 | source = "registry+https://github.com/rust-lang/crates.io-index" 100 | dependencies = [ 101 | "argparse 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 102 | "ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 103 | "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 104 | ] 105 | 106 | [[package]] 107 | name = "enum_derive" 108 | version = "0.1.7" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | 111 | [[package]] 112 | name = "error-chain" 113 | version = "0.11.0" 114 | source = "registry+https://github.com/rust-lang/crates.io-index" 115 | dependencies = [ 116 | "backtrace 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 117 | ] 118 | 119 | [[package]] 120 | name = "kernel32-sys" 121 | version = "0.2.2" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | dependencies = [ 124 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 125 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 126 | ] 127 | 128 | [[package]] 129 | name = "lazy_static" 130 | version = "0.2.9" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | 133 | [[package]] 134 | name = "libc" 135 | version = "0.2.32" 136 | source = "registry+https://github.com/rust-lang/crates.io-index" 137 | 138 | [[package]] 139 | name = "log" 140 | version = "0.3.8" 141 | source = "registry+https://github.com/rust-lang/crates.io-index" 142 | 143 | [[package]] 144 | name = "macro-attr" 145 | version = "0.2.0" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | 148 | [[package]] 149 | name = "malloc_buf" 150 | version = "0.0.6" 151 | source = "registry+https://github.com/rust-lang/crates.io-index" 152 | dependencies = [ 153 | "libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 154 | ] 155 | 156 | [[package]] 157 | name = "memchr" 158 | version = "1.0.1" 159 | source = "registry+https://github.com/rust-lang/crates.io-index" 160 | dependencies = [ 161 | "libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 162 | ] 163 | 164 | [[package]] 165 | name = "objc" 166 | version = "0.2.2" 167 | source = "registry+https://github.com/rust-lang/crates.io-index" 168 | dependencies = [ 169 | "malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 170 | ] 171 | 172 | [[package]] 173 | name = "objc-foundation" 174 | version = "0.1.1" 175 | source = "registry+https://github.com/rust-lang/crates.io-index" 176 | dependencies = [ 177 | "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 178 | "objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 179 | "objc_id 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 180 | ] 181 | 182 | [[package]] 183 | name = "objc_id" 184 | version = "0.1.0" 185 | source = "registry+https://github.com/rust-lang/crates.io-index" 186 | dependencies = [ 187 | "objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 188 | ] 189 | 190 | [[package]] 191 | name = "ordermap" 192 | version = "0.2.13" 193 | source = "registry+https://github.com/rust-lang/crates.io-index" 194 | 195 | [[package]] 196 | name = "redox_syscall" 197 | version = "0.1.31" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | 200 | [[package]] 201 | name = "redox_termios" 202 | version = "0.1.1" 203 | source = "registry+https://github.com/rust-lang/crates.io-index" 204 | dependencies = [ 205 | "redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", 206 | ] 207 | 208 | [[package]] 209 | name = "regex" 210 | version = "0.2.2" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | dependencies = [ 213 | "aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 214 | "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 215 | "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 216 | "thread_local 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 217 | "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 218 | ] 219 | 220 | [[package]] 221 | name = "regex-syntax" 222 | version = "0.4.1" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | 225 | [[package]] 226 | name = "rustc-demangle" 227 | version = "0.1.5" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | 230 | [[package]] 231 | name = "termion" 232 | version = "1.5.1" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | dependencies = [ 235 | "libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 236 | "redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", 237 | "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 238 | ] 239 | 240 | [[package]] 241 | name = "thread_local" 242 | version = "0.3.4" 243 | source = "registry+https://github.com/rust-lang/crates.io-index" 244 | dependencies = [ 245 | "lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", 246 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 247 | ] 248 | 249 | [[package]] 250 | name = "unreachable" 251 | version = "1.0.0" 252 | source = "registry+https://github.com/rust-lang/crates.io-index" 253 | dependencies = [ 254 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 255 | ] 256 | 257 | [[package]] 258 | name = "user32-sys" 259 | version = "0.2.0" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | dependencies = [ 262 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 263 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 264 | ] 265 | 266 | [[package]] 267 | name = "utf8-ranges" 268 | version = "1.0.0" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | 271 | [[package]] 272 | name = "void" 273 | version = "1.0.2" 274 | source = "registry+https://github.com/rust-lang/crates.io-index" 275 | 276 | [[package]] 277 | name = "winapi" 278 | version = "0.2.8" 279 | source = "registry+https://github.com/rust-lang/crates.io-index" 280 | 281 | [[package]] 282 | name = "winapi-build" 283 | version = "0.1.1" 284 | source = "registry+https://github.com/rust-lang/crates.io-index" 285 | 286 | [[package]] 287 | name = "x11-clipboard" 288 | version = "0.2.1" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | dependencies = [ 291 | "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 292 | "xcb 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 293 | ] 294 | 295 | [[package]] 296 | name = "xcb" 297 | version = "0.8.1" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | dependencies = [ 300 | "libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 301 | "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 302 | ] 303 | 304 | [metadata] 305 | "checksum aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699" 306 | "checksum argparse 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37bb99f5e39ee8b23b6e227f5b8f024207e8616f44aa4b8c76ecd828011667ef" 307 | "checksum backtrace 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "99f2ce94e22b8e664d95c57fff45b98a966c2252b60691d0b7aeeccd88d70983" 308 | "checksum backtrace-sys 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "b17fc3beec932aac5aa70edd2abb3c9948bfb04df4abe5cec36190655a9c02b8" 309 | "checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 310 | "checksum cc 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c674f0870e3dbd4105184ea035acb1c32c8ae69939c9e228d2b11bbfe29efad" 311 | "checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" 312 | "checksum clipboard 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d7a23c8e6bf6738816032864b8b036c9f304da5d8335e5ca725fd13577702781" 313 | "checksum clipboard-win 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "312bbb6eb8e6d5bcf357d112eea0f1cdd557b210e2c795feb13ea210b3307c7e" 314 | "checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850" 315 | "checksum editorconfig 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f8dfa22ca7964c1d4b37e2a88efe48a88b88504a4bfab19d06b57cefdd72b72" 316 | "checksum enum_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "406ac2a8c9eedf8af9ee1489bee9e50029278a6456c740f7454cf8a158abc816" 317 | "checksum error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3" 318 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 319 | "checksum lazy_static 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5" 320 | "checksum libc 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)" = "56cce3130fd040c28df6f495c8492e5ec5808fb4c9093c310df02b0c8f030148" 321 | "checksum log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b" 322 | "checksum macro-attr 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "00e51c6f0e2bf862b01b3d784fc32b02feb248a69062c51fb0b6d14cd526cc2a" 323 | "checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 324 | "checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" 325 | "checksum objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "877f30f37acef6749b1841cceab289707f211aecfc756553cd63976190e6cc2e" 326 | "checksum objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 327 | "checksum objc_id 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e4730aa1c64d722db45f7ccc4113a3e2c465d018de6db4d3e7dfe031e8c8a297" 328 | "checksum ordermap 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b81cf3b8cb96aa0e73bbedfcdc9708d09fec2854ba8d474be4e6f666d7379e8b" 329 | "checksum redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509" 330 | "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 331 | "checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b" 332 | "checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db" 333 | "checksum rustc-demangle 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e" 334 | "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" 335 | "checksum thread_local 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14" 336 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 337 | "checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47" 338 | "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" 339 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 340 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 341 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 342 | "checksum x11-clipboard 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3c1f027402da57d3aae59b858f15f2b2e66036e554c59f021e6f0f3949fbe176" 343 | "checksum xcb 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "400cebeaedeca931825f11606874080f18aa51370dd3d7e11bc08d5aac8b3142" 344 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "mfte" 3 | version = "0.3.0" 4 | authors = ["Matt Horn "] 5 | 6 | description = "MFTE, the magic-free text editor" 7 | repository = "https://github.com/mathphreak/mfte" 8 | readme = "README.md" 9 | keywords = ["text", "editor", "text-editor", "terminal"] 10 | categories = ["text-editors"] 11 | license = "MIT" 12 | 13 | [badges] 14 | travis-ci = { repository = "mathphreak/mfte" } 15 | appveyor = { repository = "mathphreak/mfte" } 16 | 17 | [dependencies] 18 | macro-attr = "0.2.0" 19 | enum_derive = "0.1.7" 20 | clipboard = "0.4.2" 21 | editorconfig = "1.0.0" 22 | 23 | [target.'cfg(windows)'.dependencies] 24 | winapi = "0.2.8" 25 | kernel32-sys = "0.2.2" 26 | 27 | [target.'cfg(not(windows))'.dependencies] 28 | termion = "1.5.1" 29 | -------------------------------------------------------------------------------- /KEYS.md: -------------------------------------------------------------------------------- 1 | | Key Spec | Action | 2 | | -------- | ------------------------------------------ | 3 | | `^A` | Select All | 4 | | `^B` | NOTHING (usually bold) | 5 | | `^C` | Copy | 6 | | `^D` | NOTHING (usually bookmark / select next) | 7 | | `^E` | NOTHING | 8 | | `^F` | Find (NYI) | 9 | | `^G` | Goto | 10 | | `^H` | RESERVED (ANSI backspace, usually replace) | 11 | | `^I` | RESERVED (ANSI tab, usually italic) | 12 | | `^J` | RESERVED (ANSI newline) | 13 | | `^K` | NOTHING | 14 | | `^L` | NOTHING | 15 | | `^M` | RESERVED (ANSI carriage return) | 16 | | `^N` | New File (NYI, subsumed by New Tab) | 17 | | `^O` | Open File | 18 | | `^P` | NOTHING (usually print / find file) | 19 | | `^Q` | Quit | 20 | | `^R` | Reload (NYFI) | 21 | | `^S` | Save (current behavior is really Save As) | 22 | | `^T` | New Tab (currently also New File) | 23 | | `^U` | NOTHING (usually underline) | 24 | | `^V` | Paste | 25 | | `^W` | Close Tab | 26 | | `^X` | Cut | 27 | | `^Y` | Redo (NYI) | 28 | | `^Z` | Undo (NYI) | 29 | | `^[` | RESERVED (ANSI escape) | 30 | | `^\` | NOTHING | 31 | | `^]` | NOTHING | 32 | | `^^` | NOTHING | 33 | | `^_` | NOTHING | 34 | 35 | # The Win32-Only Zone 36 | | Key Spec | Action | 37 | | ------------ | -------------------------------------- | 38 | | Escape | Exit One-Liner / Deselect Text | 39 | | Ctrl-Tab | Switch to Next Tab | 40 | | Shift-\