README.md in tty-editor-0.6.0 vs README.md in tty-editor-0.7.0
- old
+ new
@@ -1,27 +1,27 @@
<div align="center">
- <a href="https://ttytoolkit.org" target="_blank"><img width="130" src="https://github.com/piotrmurach/tty/raw/master/images/tty.png" alt="TTY Toolkit logo" /></a>
+ <a href="https://ttytoolkit.org"><img width="130" src="https://github.com/piotrmurach/tty/raw/master/images/tty.png" alt="TTY Toolkit logo" /></a>
</div>
# TTY::Editor [][gitter]
[][gem]
-[][travis]
+[][gh_actions_ci]
[][appveyor]
[][codeclimate]
[][coverage]
-[][inchpages]
+[][inchpages]
[gitter]: https://gitter.im/piotrmurach/tty
-[gem]: http://badge.fury.io/rb/tty-editor
-[travis]: http://travis-ci.org/piotrmurach/tty-editor
+[gem]: https://badge.fury.io/rb/tty-editor
+[gh_actions_ci]: https://github.com/piotrmurach/tty-editor/actions?query=workflow%3ACI
[appveyor]: https://ci.appveyor.com/project/piotrmurach/tty-editor
[codeclimate]:https://codeclimate.com/github/piotrmurach/tty-editor/maintainability
[coverage]: https://coveralls.io/github/piotrmurach/tty-editor
-[inchpages]: http://inch-ci.org/github/piotrmurach/tty-editor
+[inchpages]: https://inch-ci.org/github/piotrmurach/tty-editor
-> Opens a file or text in the user's preferred editor.
+> Open a file or text in a preferred terminal text editor.
**TTY::Editor** provides independent component for [TTY](https://github.com/piotrmurach/tty) toolkit.
## Installation
@@ -46,11 +46,15 @@
* [2.1 new](#21-new)
* [2.1.1 :command](#211-command)
* [2.1.2 :env](#212-env)
* [2.1.3 :raise_on_failure](#213-raise_on_failure)
* [2.1.4 :prompt](#214-prompt)
+ * [2.1.5 :hide_menu](#215-hide_menu)
+ * [2.1.6 :enable_color](#216-enable_color)
+ * [2.1.7 :menu_interrupt](#217-menu_interrupt)
* [2.2 open](#22-open)
+* [3. Default Editors](#3-default-editors)
## 1. Usage
To edit a file in a default text editor do:
@@ -78,21 +82,21 @@
TTY::Editor.open("/path/to/file", command: "vim -f")
```
When `VISUAL` or `EDITOR` are not specified, a selection menu will be presented to the user.
-For example, if an user has `vim`, `emacs` and `code` editors available on their system, they will see the following menu:
+For example, if an user has `code`, `emacs` and `vim` editors available on their system, they will see the following menu:
```
-# Select an editor?
-# 1) vim
-# 2) emacs
-# 3) code
-# Choose 1-2 [1]:
+Select an editor?
+ 1) code
+ 2) emacs
+ 3) vim
+ Choose 1-3 [1]:
```
-You can further customise this behaviour with [:prompt](#214-prompt).
+You can further customise this behaviour with [:prompt](#214-prompt), [:hide_menu](#215-hide_menu), [:enable_color](#216-enable_color) and [:menu_interrupt](#217-menu_interrupt).
## 2. API
### 2.1 new
@@ -158,18 +162,18 @@
#### 2.1.4 :prompt
When more than one editor is available and user hasn't specified their preferred choice via `VISUAL` or `EDITOR` variables, a selection menu is presented.
-For example, when `vim`, `emacs` and `code` executable exists on the system, the following menu will be displayed:
+For example, when `code`, `emacs` and `vim` executable exists on the system, the following menu will be displayed:
```
-# Select an editor?
-# 1) vim
-# 2) emacs
-# 3) code
-# Choose 1-2 [1]:
+Select an editor?
+ 1) code
+ 2) emacs
+ 3) vim
+ Choose 1-3 [1]:
```
If you would like to change the menu prompt use `:prompt` keyword:
```ruby
@@ -178,17 +182,65 @@
```
This may produce the following in the terminal:
```
-# Which one do you fancy?
-# 1) vim
-# 2) emacs
-# 3) code
-# Choose 1-2 [1]:
+Which one do you fancy?
+ 1) code
+ 2) emacs
+ 3) vim
+ Choose 1-3 [1]:
```
+#### 2.1.5 :hide_menu
+
+When more than one editor is available from the default list, a selection menu will be displayed in the console:
+
+```
+Select an editor?
+ 1) code
+ 2) emacs
+ 3) vim
+ Choose 1-3 [1]:
+```
+
+To hide the menu and automatically choose the first available editor use the `:hide_menu` keyword option:
+
+```ruby
+editor = TTY::Editor.new(hide_menu: true)
+```
+
+#### 2.1.6 :enable_color
+
+An editor selection menu will display the first choice in colour on terminals that support colours. However, you can turn off colouring with the `:enable_color` keyword option:
+
+```ruby
+editor = TTY::Editor.new(enable_color: false)
+```
+
+Equally, you can enforce the current menu choice to be always coloured:
+
+```ruby
+editor = TTY::Editor.new(enable_color: true)
+```
+
+### 2.1.7 :menu_interrupt
+
+When an editor selection menu gets interrupted by the `Ctrl+C` key, an `InputInterrupt` error is raised. To change this, provide the `:menu_interrupt` option with one of the following:
+
+* `:error` - raises `InputInterrupt` error
+* `:exit` - exits with `130` status code
+* `:noop` - skips handler
+* `:signal` - sends interrupt signal
+* `proc` - custom proc handler
+
+For example, to immediately exit the menu and program do:
+
+```ruby
+editor = TTY::Editor.new(menu_interrupt: :exit)
+```
+
### 2.2 open
There is a class-level and instance-level `open` method. These are equivalent:
```ruby
@@ -239,22 +291,45 @@
```ruby
TTY::Editor.open("file_1", "file_2", "new_file_3")
```
+## 3. Default Editors
+
+When an editor in `EDITOR` and `VISUAL` environment variables can't be found or isn't specified, a choice menu is displayed. The menu includes available editors from the default list of text editors:
+
+* `Atom`
+* `Emacs`
+* `gedit`
+* `JED`
+* `Kate`
+* `Mg`
+* `Nano`
+* `Notepad`
+* `Pico`
+* `Sublime Text`
+* `TextMate`
+* `Vi`
+* `Vim`
+* `Visual Studio Code`
+
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
-Bug reports and pull requests are welcome on GitHub at https://github.com/piotrmurach/tty-editor. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
+Bug reports and pull requests are welcome on GitHub at https://github.com/piotrmurach/tty-editor. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/piotrmurach/tty-editor/blob/master/CODE_OF_CONDUCT.md).
## License
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
+
+## Code of Conduct
+
+Everyone interacting in the TTY::Editor project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/piotrmurach/tty-editor/blob/master/CODE_OF_CONDUCT.md).
## Copyright
Copyright (c) 2017 Piotr Murach. See LICENSE for further details.