diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..01a0984 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 karlicoss + +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 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. diff --git a/README.org b/README.org new file mode 100644 index 0000000..e0a4ca9 --- /dev/null +++ b/README.org @@ -0,0 +1,57 @@ +#+begin_src python :exports results :results output drawer +import open_in_editor +print(open_in_editor.__doc__) +#+end_src + +#+RESULTS: +:results: + +This scripts allows opening your text editor from a link on a webpage/within a browser extension via MIME. +See a short [[https://karlicoss.github.io/promnesia-demos/jump_to_editor.webm][demo]]. + +It handles URIs like: + +: editor:///path/to/file:123 +: editor:///path/to/file?line=456 + +See =test_parse_uri= for more examples. + +To install (register the MIME handler), run + +: python3 open_in_editor.py --install --editor emacs + +See =--help= for the list of available editors. If you want to add other editors, the code should be easy to follow. + +You can check that it works with + +: xdg-open 'editor:///path/to/some/file' + +I haven't found any existing/mature scripts for this, *please let me know if you know of any*! I'd be quite happy to support one less script :) + +The script was tested on *Linux only*! I'd be happy if someone contributes adjustments for OSX. + +:end: + +* Usage + +#+begin_src bash :exports results :results output verbatim +./open_in_editor.py --help +#+end_src + +#+RESULTS: +#+begin_example +usage: open_in_editor.py [-h] [--editor {emacs,vim,gvim,default}] [--install] + [--run-tests] + [uri] + +positional arguments: + uri URI to open + optional line number + +optional arguments: + -h, --help show this help message and exit + --editor {emacs,vim,gvim,default} + Editor to use. 'default' means using your default GUI + editor (discovered with open/xdg-open) + --install Pass to install (i.g. register MIME in your system) + --run-tests Pass to run unit tests +#+end_example diff --git a/open-in-editor b/open_in_editor.py similarity index 89% rename from open-in-editor rename to open_in_editor.py index 5692a68..e3974bc 100755 --- a/open-in-editor +++ b/open_in_editor.py @@ -1,23 +1,28 @@ #!/usr/bin/env python3 ''' -This scripts allows triggering opening emacs from a link on a webpage/browser extension via MIME. -Handles links like: +This scripts allows opening your text editor from a link on a webpage/within a browser extension via MIME. +See a short [[https://karlicoss.github.io/promnesia-demos/jump_to_editor.webm][demo]]. - editor:///path/tofile:123 +It handles URIs like: -See test_parse_uri for more examples. +: editor:///path/to/file:123 +: editor:///path/to/file?line=456 + +See =test_parse_uri= for more examples. To install (register the MIME handler), run - python3 open-in-editor --editor emacs --install +: python3 open_in_editor.py --install --editor emacs -See --help for the list of available editors. If you want to add other editors, the code should be easy to follow. +See =--help= for the list of available editors. If you want to add other editors, the code should be easy to follow. You can check that it works with - xdg-open 'editor:///path/to/some/file' +: xdg-open 'editor:///path/to/some/file' -I haven't found any existing/mature scripts for this, please let me know if you know of any! I'd be happy to support one less script. +I haven't found any existing/mature scripts for this, *please let me know if you know of any*! I'd be quite happy to support one less script :) + +The script was tested on *Linux only*! I'd be happy if someone contributes adjustments for OSX. ''' # TODO make it editor-agnostic? although supporting line numbers will be trickier @@ -111,7 +116,7 @@ Terminal=false MimeType=x-scheme-handler/{PROTOCOL_NAME}; """.strip() with tempfile.TemporaryDirectory() as td: - pp = Path(td) / 'open-in-editor.desktop' + pp = Path(td) / 'open_in_editor.desktop' pp.write_text(CONTENT) check_call(['desktop-file-validate', str(pp)]) dfile = Path('~/.local/share/applications').expanduser()