84 lines
4.2 KiB
Markdown
84 lines
4.2 KiB
Markdown
# gemini.nvim
|
|
|
|
This started out with a simple question: can one take the [Gemini demo client written in Lua](https://tildegit.org/solderpunk/gemini-demo-2) and wrap it up as a Neovim plugin? A quick afternoon hacking session suggests that the answer is yes. I'll see how far I can take this.
|
|
|
|
Note: this is the result of an afternoon of experimenting, borrowing code from the demo client and [sloum/gemini-vim-syntax](https://tildegit.org/sloum/gemini-vim-syntax) and throwing in some Vimscript.
|
|
|
|
## Dependencies
|
|
|
|
This plugin requires the [LuaSocket](http://w3.impa.br/~diego/software/luasocket/), [LuaSec](https://github.com/brunoos/luasec/) and [Penlight](https://github.com/lunarmodules/Penlight) libraries. So far I used the following [packer.nvim](https://github.com/wbthomason/packer.nvim) config for development:
|
|
|
|
```lua
|
|
use { '~/Developer/gemini.nvim' }
|
|
use_rocks {'luasocket'}
|
|
use_rocks {'luasec', env = {OPENSSL_DIR = "/usr/local/opt/openssl"}}
|
|
use_rocks {'penlight'}
|
|
```
|
|
|
|
These should probably use the proper dependency syntax, but I just wanted to get this to work.
|
|
|
|
## Contributing
|
|
|
|
Bug reports, issues, and pull requests are welcome at https://tildegit.org/citizen428/gemini.nvim.
|
|
|
|
### Todo
|
|
|
|
* [X] Add ability to open Gemini page in Neovim
|
|
* [X] Add gemtext highlighting to the Gemini buffer
|
|
* [ ] Structure code more properly
|
|
* [ ] Implement handling of other status codes than 20
|
|
* [ ] Implement navigation features (follow link, back, forward)
|
|
* [ ] Implement bookmarks
|
|
* [ ] Replace demo Lua client code with own code
|
|
* [ ] Optionally integrate with [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim), e.g. bookmark and history pickers.
|
|
|
|
## License
|
|
|
|
* Original code:
|
|
|
|
MIT License Copyright (c) 2021 Michael Kohl
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is furnished
|
|
to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice (including the next
|
|
paragraph) shall be included in all copies or substantial portions of the
|
|
Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
|
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
|
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
* Gemini Lua client code:
|
|
|
|
Copyright (c) 2019 <solderpunk@sdf.org> . All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without modification,
|
|
are permitted provided that the following conditions are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright notice,
|
|
this list of conditions and the following disclaimer.
|
|
|
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimer in the documentation
|
|
and/or other materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
|
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|