/
Insert Entity….plist
48 lines (43 loc) · 1.38 KB
/
Insert Entity….plist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>beforeRunningCommand</key>
<string>nop</string>
<key>command</key>
<string>#!/usr/bin/env ruby -w
SUPPORT = ENV['TM_SUPPORT_PATH']
DIALOG = SUPPORT + '/bin/tm_dialog'
require "#{SUPPORT}/lib/osx/plist"
require "#{SUPPORT}/lib/escape"
entities = [ ]
File.read("#{ENV['TM_BUNDLE_SUPPORT']}/entities.txt").scan(/^(\d+)\t(.+)$/) do |key, value|
char = [key.to_i].pack('U')
entities << { 'display' => "#{value} (#{char})", 'char' => char, 'entity' => value }
end
plist = { 'entities' => entities, 'insertAsEntity' => true }.to_plist
open("|#{e_sh DIALOG} -cm 'Insert Entity'", 'w+') do |io|
io << plist; io.close_write
res = OSX::PropertyList.load(io.read)['result']
abort if res.nil?
if res['asEntity'].to_i == 1
print '&' + res['returnArgument'].first['entity'] + ';'
else
print res['returnArgument'].first['char']
end
end
</string>
<key>input</key>
<string>none</string>
<key>keyEquivalent</key>
<string>@&</string>
<key>name</key>
<string>Insert Entity…</string>
<key>output</key>
<string>afterSelectedText</string>
<key>scope</key>
<string>text.html</string>
<key>uuid</key>
<string>89E5CC0A-3EFF-4DEF-A299-2E9651DE6529</string>
</dict>
</plist>