Skip to content

Commit 7ff99d0

Browse files
committed
update edit_in_vim workflow
1 parent 5328298 commit 7ff99d0

File tree

4 files changed

+285
-43
lines changed

4 files changed

+285
-43
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
### setup
66
- `tmpdir`: where this workflow holds the tempfile you edit upon, just `echo $TMPDIR`.
7-
- `timeout`: the maximal time this workflow will wait until you finish editing.
87

98
### Acknowledge
10-
icon https://iconverticons.com/icons/92d8febce1d7a304/
9+
- [flat vim icon](https://iconverticons.com/icons/92d8febce1d7a304/)
10+
- [Alfred App Community Forum](https://www.alfredforum.com/topic/10547-edit-clipboard-within-macvim/)

sources/edit_in_vim/icon.png

6.38 KB
Loading

sources/edit_in_vim/info.plist

Lines changed: 280 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,280 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>bundleid</key>
6+
<string>xyz.cdpath.macvim</string>
7+
<key>category</key>
8+
<string>Productivity</string>
9+
<key>connections</key>
10+
<dict>
11+
<key>09BFD680-036B-463F-A4B1-422F7A874C1B</key>
12+
<array>
13+
<dict>
14+
<key>destinationuid</key>
15+
<string>DC2C7EAE-8984-432E-BD1C-4C6E495B4E6F</string>
16+
<key>modifiers</key>
17+
<integer>0</integer>
18+
<key>modifiersubtext</key>
19+
<string></string>
20+
<key>vitoclose</key>
21+
<false/>
22+
</dict>
23+
</array>
24+
<key>3CEDE0FD-7296-4D05-9B7D-6DE2C62E5334</key>
25+
<array>
26+
<dict>
27+
<key>destinationuid</key>
28+
<string>09BFD680-036B-463F-A4B1-422F7A874C1B</string>
29+
<key>modifiers</key>
30+
<integer>0</integer>
31+
<key>modifiersubtext</key>
32+
<string></string>
33+
<key>vitoclose</key>
34+
<false/>
35+
</dict>
36+
</array>
37+
<key>885AED7A-6269-4993-9D2F-07C7C331E016</key>
38+
<array>
39+
<dict>
40+
<key>destinationuid</key>
41+
<string>D0013B0E-0699-4D08-9FBB-A692B67543F5</string>
42+
<key>modifiers</key>
43+
<integer>0</integer>
44+
<key>modifiersubtext</key>
45+
<string></string>
46+
<key>vitoclose</key>
47+
<false/>
48+
</dict>
49+
</array>
50+
<key>C77D87F6-7C9B-45D8-B284-9A50CD4904DB</key>
51+
<array>
52+
<dict>
53+
<key>destinationuid</key>
54+
<string>3CEDE0FD-7296-4D05-9B7D-6DE2C62E5334</string>
55+
<key>modifiers</key>
56+
<integer>0</integer>
57+
<key>modifiersubtext</key>
58+
<string></string>
59+
<key>vitoclose</key>
60+
<false/>
61+
</dict>
62+
</array>
63+
<key>D0013B0E-0699-4D08-9FBB-A692B67543F5</key>
64+
<array>
65+
<dict>
66+
<key>destinationuid</key>
67+
<string>C77D87F6-7C9B-45D8-B284-9A50CD4904DB</string>
68+
<key>modifiers</key>
69+
<integer>0</integer>
70+
<key>modifiersubtext</key>
71+
<string></string>
72+
<key>vitoclose</key>
73+
<false/>
74+
</dict>
75+
</array>
76+
</dict>
77+
<key>createdby</key>
78+
<string>cdpath</string>
79+
<key>description</key>
80+
<string>Edit clipboard content with MacVim</string>
81+
<key>disabled</key>
82+
<false/>
83+
<key>name</key>
84+
<string>Edit in Vim</string>
85+
<key>objects</key>
86+
<array>
87+
<dict>
88+
<key>config</key>
89+
<dict>
90+
<key>autopaste</key>
91+
<false/>
92+
<key>clipboardtext</key>
93+
<string>{query}</string>
94+
<key>transient</key>
95+
<false/>
96+
</dict>
97+
<key>type</key>
98+
<string>alfred.workflow.output.clipboard</string>
99+
<key>uid</key>
100+
<string>DC2C7EAE-8984-432E-BD1C-4C6E495B4E6F</string>
101+
<key>version</key>
102+
<integer>2</integer>
103+
</dict>
104+
<dict>
105+
<key>config</key>
106+
<dict>
107+
<key>adduuid</key>
108+
<true/>
109+
<key>allowemptyfiles</key>
110+
<true/>
111+
<key>createintermediatefolders</key>
112+
<false/>
113+
<key>filename</key>
114+
<string>{var:tmpdir}/AlfredClipboardContent.txt</string>
115+
<key>filetext</key>
116+
<string>{clipboard}</string>
117+
<key>relativepathmode</key>
118+
<integer>0</integer>
119+
<key>type</key>
120+
<integer>1</integer>
121+
</dict>
122+
<key>type</key>
123+
<string>alfred.workflow.output.writefile</string>
124+
<key>uid</key>
125+
<string>D0013B0E-0699-4D08-9FBB-A692B67543F5</string>
126+
<key>version</key>
127+
<integer>1</integer>
128+
</dict>
129+
<dict>
130+
<key>config</key>
131+
<dict>
132+
<key>concurrently</key>
133+
<true/>
134+
<key>escaping</key>
135+
<integer>0</integer>
136+
<key>script</key>
137+
<string></string>
138+
<key>scriptargtype</key>
139+
<integer>1</integer>
140+
<key>scriptfile</key>
141+
<string>run.py</string>
142+
<key>type</key>
143+
<integer>8</integer>
144+
</dict>
145+
<key>type</key>
146+
<string>alfred.workflow.action.script</string>
147+
<key>uid</key>
148+
<string>09BFD680-036B-463F-A4B1-422F7A874C1B</string>
149+
<key>version</key>
150+
<integer>2</integer>
151+
</dict>
152+
<dict>
153+
<key>config</key>
154+
<dict>
155+
<key>concurrently</key>
156+
<false/>
157+
<key>escaping</key>
158+
<integer>102</integer>
159+
<key>script</key>
160+
<string>/usr/local/bin/mvim -f $filename</string>
161+
<key>scriptargtype</key>
162+
<integer>1</integer>
163+
<key>scriptfile</key>
164+
<string></string>
165+
<key>type</key>
166+
<integer>0</integer>
167+
</dict>
168+
<key>type</key>
169+
<string>alfred.workflow.action.script</string>
170+
<key>uid</key>
171+
<string>3CEDE0FD-7296-4D05-9B7D-6DE2C62E5334</string>
172+
<key>version</key>
173+
<integer>2</integer>
174+
</dict>
175+
<dict>
176+
<key>config</key>
177+
<dict>
178+
<key>argumenttype</key>
179+
<integer>2</integer>
180+
<key>keyword</key>
181+
<string>pbedit</string>
182+
<key>subtext</key>
183+
<string>Edit clipboard with MacVim</string>
184+
<key>text</key>
185+
<string>edit clipboard</string>
186+
<key>withspace</key>
187+
<false/>
188+
</dict>
189+
<key>type</key>
190+
<string>alfred.workflow.input.keyword</string>
191+
<key>uid</key>
192+
<string>885AED7A-6269-4993-9D2F-07C7C331E016</string>
193+
<key>version</key>
194+
<integer>1</integer>
195+
</dict>
196+
<dict>
197+
<key>config</key>
198+
<dict>
199+
<key>argument</key>
200+
<string>{query}</string>
201+
<key>variables</key>
202+
<dict>
203+
<key>filename</key>
204+
<string>{query}</string>
205+
</dict>
206+
</dict>
207+
<key>type</key>
208+
<string>alfred.workflow.utility.argument</string>
209+
<key>uid</key>
210+
<string>C77D87F6-7C9B-45D8-B284-9A50CD4904DB</string>
211+
<key>version</key>
212+
<integer>1</integer>
213+
</dict>
214+
</array>
215+
<key>readme</key>
216+
<string># setup
`tmpdir` is where this workflow holds the tempfile you edit upon, `echo $TMPDIR` to get tmpdir value.
217+
218+
219+
# Acknowledge
220+
icon https://iconverticons.com/icons/92d8febce1d7a304/</string>
221+
<key>uidata</key>
222+
<dict>
223+
<key>09BFD680-036B-463F-A4B1-422F7A874C1B</key>
224+
<dict>
225+
<key>xpos</key>
226+
<integer>600</integer>
227+
<key>ypos</key>
228+
<integer>60</integer>
229+
</dict>
230+
<key>3CEDE0FD-7296-4D05-9B7D-6DE2C62E5334</key>
231+
<dict>
232+
<key>xpos</key>
233+
<integer>440</integer>
234+
<key>ypos</key>
235+
<integer>60</integer>
236+
</dict>
237+
<key>885AED7A-6269-4993-9D2F-07C7C331E016</key>
238+
<dict>
239+
<key>xpos</key>
240+
<integer>40</integer>
241+
<key>ypos</key>
242+
<integer>60</integer>
243+
</dict>
244+
<key>C77D87F6-7C9B-45D8-B284-9A50CD4904DB</key>
245+
<dict>
246+
<key>xpos</key>
247+
<integer>360</integer>
248+
<key>ypos</key>
249+
<integer>90</integer>
250+
</dict>
251+
<key>D0013B0E-0699-4D08-9FBB-A692B67543F5</key>
252+
<dict>
253+
<key>xpos</key>
254+
<integer>210</integer>
255+
<key>ypos</key>
256+
<integer>60</integer>
257+
</dict>
258+
<key>DC2C7EAE-8984-432E-BD1C-4C6E495B4E6F</key>
259+
<dict>
260+
<key>xpos</key>
261+
<integer>760</integer>
262+
<key>ypos</key>
263+
<integer>60</integer>
264+
</dict>
265+
</dict>
266+
<key>variables</key>
267+
<dict>
268+
<key>tmpdir</key>
269+
<string>/var/folders/c2/ph3z4gss2qx31412xmm9kgr40000gn/T/</string>
270+
</dict>
271+
<key>variablesdontexport</key>
272+
<array>
273+
<string>tmpdir</string>
274+
</array>
275+
<key>version</key>
276+
<string>0.0.2</string>
277+
<key>webaddress</key>
278+
<string>cdpath.xyz</string>
279+
</dict>
280+
</plist>

sources/edit_in_vim/run.py

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,17 @@
11
#!/usr/bin/python
22
# -*- coding: utf-8 -*-
3-
import multiprocessing as mp
43
import os
54
import sys
6-
from time import sleep
75

86
env = os.environ.get
97

108

11-
def _check(filename):
12-
swp_filename = os.path.join(
13-
os.path.dirname(filename),
14-
'.' + os.path.basename(filename) + '.swp'
15-
)
16-
sleep(1)
17-
while True:
18-
if os.path.exists(swp_filename):
19-
sleep(1)
20-
else:
21-
return True
22-
23-
249
def _read(filename):
2510
with open(filename) as f:
2611
sys.stdout.write(f.read().rstrip('\n'))
27-
28-
29-
def expire(func, args=(), timeout=1, default=False):
30-
pool = mp.Pool(processes=1)
31-
result = pool.apply_async(func, args=args)
32-
try:
33-
val = result.get(timeout=timeout)
34-
except mp.TimeoutError:
35-
pool.terminate()
36-
return default
37-
else:
38-
pool.close()
39-
pool.join()
40-
return val
41-
42-
43-
def run(filename, timeout):
44-
r = expire(_check, args=(filename,), timeout=timeout)
45-
if r:
46-
_read(filename)
47-
os.remove(filename)
48-
else:
49-
pass #todo add notify
12+
os.remove(filename)
5013

5114

5215
if __name__ == '__main__':
53-
tmp_f = sys.argv[1]
54-
timeout = int(env("timeout"), 30)
55-
run(tmp_f, timeout)
16+
tmp_f = env('filename')
17+
_read(tmp_f)

0 commit comments

Comments
 (0)