-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpastetofriendpaste.py
More file actions
99 lines (90 loc) · 2.96 KB
/
pastetofriendpaste.py
File metadata and controls
99 lines (90 loc) · 2.96 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# -*- coding: utf-8 -*-
import os
import sublime
import sublime_plugin
import json
from sendpaste import SendPaste, FRIENDPASTE_URL
SYNTAXES = {
'ActionScript.tmLanguage': 'as',
'AppleScript.tmLanguage': 'applescript',
'ASP.tmLanguage': 'asp',
'Bibtex.tmLanguage': 'bibtex',
'C.tmLanguage': 'c',
'C#.tmLanguage': 'csharp',
'C++.tmLanguage': 'cpp',
'Clojure.tmLanguage': 'clojure',
'CoffeeScript.tmLanguage': 'coffeescript',
'CSS.tmLanguage': 'css',
'D.tmLanguage': 'd',
'Diff.tmLanguage': 'diff',
'DOT.tmLanguage': 'dot',
'Erlang.tmLanguage': 'erlang',
'Go.tmLanguage': 'go',
'Groovy.tmLanguage': 'groovy',
'Haskell.tmLanguage': 'haskell',
'HTML.tmLanguage': 'html5',
'Java.tmLanguage': 'java',
'JavaScript.tmLanguage': 'javascript',
'JSON.tmLanguage': 'javascript',
'JSON Generic Array Elements.tmLanguage': 'javascript',
'LaTeX.tmLanguage': 'latex',
'LaTeX Beamer.tmLanguage': 'latex',
'LaTeX Memoir.tmLanguage': 'latex',
'Lisp.tmLanguage': 'lisp',
'Literate Haskell.tmLanguage': 'haskell',
'Lua.tmLanguage': 'lua',
'Makefile.tmLanguage': 'make',
'Matlab.tmLanguage': 'matlab',
'Objective-C.tmLanguage': 'objc',
'Objective-C++.tmLanguage': 'objc',
'OCaml.tmLanguage': 'ocaml',
'OCamllex.tmLanguage': 'ocaml',
'OCamlyacc.tmLanguage': 'ocaml',
'Perl.tmLanguage': 'perl',
'PHP.tmLanguage': 'php',
'Plain text.tmLanguage': 'text',
'Python.tmLanguage': 'python',
'R.tmLanguage': 'rsplus',
'R Console.tmLanguage': 'rsplus',
'Regular Expressions (Python).tmLanguage': 'python',
'Ruby.tmLanguage': 'ruby',
'Ruby Haml.tmLanguage': 'ruby',
'Ruby on Rails.tmLanguage': 'rails',
'Scala.tmLanguage': 'scala',
'SCSS.tmLanguage': 'css',
'Shell-Unix-Generic.tmLanguage': 'bash',
'SQL.tmLanguage': 'sql',
'SQL (Rails).tmLanguage': 'sql',
'Tcl.tmLanguage': 'tcl',
'TeX.tmLanguage': 'latex',
'TeX Math.tmLanguage': 'latex',
'Textile.tmLanguage': 'latex',
'XML.tmLanguage': 'xml',
'YAML.tmLanguage': 'yaml'
}
class PasteToFriendpaste(sublime_plugin.TextCommand, SendPaste):
def run(self, view, paste_name=None):
if paste_name is None:
paste_name = self.view.file_name()
if paste_name is not None:
paste_name = os.path.basename(paste_name) # Extract base name
else:
paste_name = "Untitled"
text = ""
for region in self.view.sel():
syntax = SYNTAXES.get(self.view.settings().get('syntax').split('/')[-1], 'text')
if text:
text = text + '\n' + self.view.substr(region).encode('utf8')
else:
text = self.view.substr(region).encode('utf8')
if not text:
sublime.status_message('Error sending to %s: Nothing selected' % FRIENDPASTE_URL)
else:
self._data = json.dumps({
'title': paste_name,
'snippet': text,
'language': syntax
})
paste = self.send_paste()
sublime.set_clipboard(paste['url'])
sublime.status_message('PasteBin URL copied to clipboard: ' + paste['url'])