Skip to content

Commit 9ce75a6

Browse files
committed
V1
0 parents  commit 9ce75a6

File tree

4 files changed

+122
-0
lines changed

4 files changed

+122
-0
lines changed

Default (OSX).sublime-keymap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[
2+
{ "keys": ["super+shift+l"], "command": "insert_content" }
3+
]

em.sublime-settings

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"em_urls": {
3+
"create" : "https://www.editmode.app/api/v1/bits"
4+
},
5+
"em_default_snippet_template" : "rails_interpolated",
6+
"em_snippet_templates" : {
7+
"rails_interpolated" : "#{bit('{label}','{identifier}')}",
8+
"rails_haml" : "=bit('{label}','{identifier}')",
9+
}
10+
}

insert_content.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import sublime, sublime_plugin, urllib, urllib.request, json
2+
3+
class InsertContentCommand(sublime_plugin.TextCommand):
4+
5+
# To do:
6+
# Threading
7+
# Getting
8+
# Warning if user accidentally hits the shortcut twice and tries to re-send the resulting snippet
9+
10+
def run(self, edit):
11+
12+
# Load settings
13+
settings = sublime.load_settings("em.sublime-settings")
14+
15+
# Get variables from settings
16+
17+
urls = sublime.active_window().active_view().settings().get('em_urls', settings.get("em_urls"))
18+
em_create_url = urls['create']
19+
20+
authentication_token = sublime.active_window().active_view().settings().get('em_authentication_token', settings.get("em_authentication_token"))
21+
22+
default_snippet_template = sublime.active_window().active_view().settings().get('em_default_snippet_template', settings.get("em_default_snippet_template"))
23+
snippet_templates = sublime.active_window().active_view().settings().get('em_snippet_templates', settings.get("em_snippet_templates"))
24+
snippet_template = snippet_templates[default_snippet_template]
25+
26+
# Get selected text
27+
selections = self.view.sel()
28+
29+
# The following code needs to be made threadsafe
30+
for selection in selections:
31+
32+
# Get selected text
33+
content = self.view.substr(selection)
34+
35+
data = {
36+
"bit" : {
37+
"content" : content
38+
},
39+
"authentication_token" : authentication_token
40+
}
41+
42+
# Urllib only accepts encoded data
43+
params = json.dumps(data).encode('utf8')
44+
45+
request = urllib.request.Request(
46+
em_create_url,
47+
data=params,
48+
headers={'Content-Type': 'application/json','User-Agent': 'Mozilla/5.0' }
49+
)
50+
51+
try:
52+
response = urllib.request.urlopen(request)
53+
response_as_string = response.read().decode('utf8')
54+
response_as_json = json.loads(response_as_string)
55+
56+
bit_info = response_as_json["bit"]
57+
58+
bit_identifier = bit_info['identifier']
59+
bit_content = bit_info['content']
60+
61+
shortened_original_content = bit_content[:10] + (bit_content[10:] and '..')
62+
63+
replacement_text = snippet_template.replace("{identifier}", bit_identifier)
64+
replacement_text = replacement_text.replace("{label}", shortened_original_content)
65+
66+
# Make the replacement
67+
self.view.replace(edit, selection, replacement_text )
68+
69+
except urllib.error.HTTPError as e:
70+
71+
response_as_string = e.read().decode('utf8')
72+
response_as_json = json.loads(response_as_string)
73+
message = response_as_json['message']
74+
75+
sublime.error_message(message)
76+
77+

readme.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
# Setup
3+
4+
1. Navigate to the Sublime Packages directory on your machine
5+
```
6+
cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/
7+
```
8+
9+
2. Clone this repository into it
10+
```
11+
git clone https://github.com/tonyennis145/editmode-sublime.git editmode
12+
```
13+
14+
3. Set your authentication credentials
15+
- Every open directory in Sublime is seen as a `project`. In order to apply project specific settings, you need to save the existing open project:
16+
`Project -> Save Project As`
17+
- I would recommend saving the project file in the directory you would like the settings to apply to.
18+
- Once the `.sublime-project` file is saved, open it and add your settings
19+
```
20+
{
21+
"folders":
22+
[
23+
{
24+
"path": "/Users/you/yourpath"
25+
}
26+
],
27+
"settings":
28+
{
29+
"em_authentication_token": ""
30+
}
31+
}
32+
```

0 commit comments

Comments
 (0)