Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

updated sublime settings

  • Loading branch information...
commit 35a067466bec22e89770602eba414c816b85e97d 1 parent 6bb3a1d
Mio Nilsson authored
Showing with 8,326 additions and 398 deletions.
  1. BIN  Sublime Text 2/Packages/ASP/ASP.tmLanguage.cache
  2. BIN  Sublime Text 2/Packages/ASP/HTML-ASP.tmLanguage.cache
  3. BIN  Sublime Text 2/Packages/ActionScript/ActionScript.tmLanguage.cache
  4. BIN  Sublime Text 2/Packages/AppleScript/AppleScript.tmLanguage.cache
  5. BIN  Sublime Text 2/Packages/Batch File/Batch File.tmLanguage.cache
  6. BIN  Sublime Text 2/Packages/C#/Build.tmLanguage.cache
  7. BIN  Sublime Text 2/Packages/C#/C#.tmLanguage.cache
  8. BIN  Sublime Text 2/Packages/C++/C++.tmLanguage.cache
  9. BIN  Sublime Text 2/Packages/C++/C.tmLanguage.cache
  10. BIN  Sublime Text 2/Packages/C++/Comments (C++).tmPreferences.cache
  11. BIN  Sublime Text 2/Packages/C++/Symbol List - Indent Class Methods.tmPreferences.cache
  12. BIN  Sublime Text 2/Packages/C++/Symbol List - Prefix Banner Items.tmPreferences.cache
  13. BIN  Sublime Text 2/Packages/CSS/CSS.tmLanguage.cache
  14. BIN  Sublime Text 2/Packages/CSS/Comments.tmPreferences.cache
  15. BIN  Sublime Text 2/Packages/CSS/Symbol List Group.tmPreferences.cache
  16. BIN  Sublime Text 2/Packages/CSS/Symbol List.tmPreferences.cache
  17. BIN  Sublime Text 2/Packages/CSS/css_completions.pyc
  18. BIN  Sublime Text 2/Packages/Clojure/Clojure.tmLanguage.cache
  19. BIN  Sublime Text 2/Packages/Clojure/Comment.tmPreferences.cache
  20. BIN  Sublime Text 2/Packages/Clojure/Symbol List.tmPreferences.cache
  21. +0 −1  Sublime Text 2/Packages/CoffeeCompile/.gitignore
  22. +0 −49 Sublime Text 2/Packages/CoffeeCompile/CoffeeCompile.sublime-settings
  23. +0 −3  Sublime Text 2/Packages/CoffeeCompile/Keymaps/Default (Linux).sublime-keymap
  24. +0 −3  Sublime Text 2/Packages/CoffeeCompile/Keymaps/Default (OSX).sublime-keymap
  25. +0 −3  Sublime Text 2/Packages/CoffeeCompile/Keymaps/Default (Windows).sublime-keymap
  26. +0 −3  Sublime Text 2/Packages/CoffeeCompile/Menus/Context.sublime-menu
  27. +0 −59 Sublime Text 2/Packages/CoffeeCompile/README.md
  28. +0 −147 Sublime Text 2/Packages/CoffeeCompile/coffee_compile.py
  29. +0 −1  Sublime Text 2/Packages/CoffeeCompile/package-metadata.json
  30. BIN  Sublime Text 2/Packages/Color Scheme - Default/Monokai.tmTheme.cache
  31. BIN  Sublime Text 2/Packages/Color Scheme - Default/Twilight.tmTheme.cache
  32. BIN  Sublime Text 2/Packages/D/Comments.tmPreferences.cache
  33. BIN  Sublime Text 2/Packages/D/D.tmLanguage.cache
  34. BIN  Sublime Text 2/Packages/D/Symbol List-Method-Constructor.tmPreferences.cache
  35. BIN  Sublime Text 2/Packages/DashDoc/DashDoc.pyc
  36. +3 −1 Sublime Text 2/Packages/Default/Default (Linux).sublime-mousemap
  37. +1 −1  Sublime Text 2/Packages/Default/Find in Files.sublime-menu
  38. BIN  Sublime Text 2/Packages/Default/Meta Info Summary.cache
  39. BIN  Sublime Text 2/Packages/Default/Miscellaneous.tmPreferences.cache
  40. +1 −1  Sublime Text 2/Packages/Default/Preferences.sublime-settings
  41. BIN  Sublime Text 2/Packages/Default/Startup.cache
  42. BIN  Sublime Text 2/Packages/Default/Symbol List.tmPreferences.cache
  43. BIN  Sublime Text 2/Packages/Default/Syntax Summary.cache
  44. BIN  Sublime Text 2/Packages/Default/comment.pyc
  45. BIN  Sublime Text 2/Packages/Default/copy_path.pyc
  46. BIN  Sublime Text 2/Packages/Default/delete_word.pyc
  47. BIN  Sublime Text 2/Packages/Default/detect_indentation.pyc
  48. BIN  Sublime Text 2/Packages/Default/duplicate_line.pyc
  49. BIN  Sublime Text 2/Packages/Default/echo.pyc
  50. +1 −1  Sublime Text 2/Packages/Default/exec.py
  51. BIN  Sublime Text 2/Packages/Default/exec.pyc
  52. BIN  Sublime Text 2/Packages/Default/fold.pyc
  53. BIN  Sublime Text 2/Packages/Default/font.pyc
  54. BIN  Sublime Text 2/Packages/Default/goto_line.pyc
  55. BIN  Sublime Text 2/Packages/Default/indentation.pyc
  56. BIN  Sublime Text 2/Packages/Default/kill_ring.pyc
  57. BIN  Sublime Text 2/Packages/Default/mark.pyc
  58. BIN  Sublime Text 2/Packages/Default/new_templates.pyc
  59. BIN  Sublime Text 2/Packages/Default/open_file_settings.pyc
  60. BIN  Sublime Text 2/Packages/Default/open_in_browser.pyc
  61. BIN  Sublime Text 2/Packages/Default/paragraph.pyc
  62. BIN  Sublime Text 2/Packages/Default/save_on_focus_lost.pyc
  63. BIN  Sublime Text 2/Packages/Default/scroll.pyc
  64. BIN  Sublime Text 2/Packages/Default/send2trash/__init__.pyc
  65. BIN  Sublime Text 2/Packages/Default/send2trash/plat_osx.pyc
  66. BIN  Sublime Text 2/Packages/Default/set_unsaved_view_name.pyc
  67. BIN  Sublime Text 2/Packages/Default/side_bar.pyc
  68. BIN  Sublime Text 2/Packages/Default/sort.pyc
  69. BIN  Sublime Text 2/Packages/Default/swap_line.pyc
  70. BIN  Sublime Text 2/Packages/Default/switch_file.pyc
  71. BIN  Sublime Text 2/Packages/Default/transform.pyc
  72. BIN  Sublime Text 2/Packages/Default/transpose.pyc
  73. BIN  Sublime Text 2/Packages/Default/trim_trailing_white_space.pyc
  74. BIN  Sublime Text 2/Packages/Diff/diff.pyc
  75. BIN  Sublime Text 2/Packages/Erlang/Comments.tmPreferences.cache
  76. BIN  Sublime Text 2/Packages/Erlang/Erlang.tmLanguage.cache
  77. BIN  Sublime Text 2/Packages/Erlang/Function Symbols.tmPreferences.cache
  78. BIN  Sublime Text 2/Packages/Erlang/HTML (Erlang).tmLanguage.cache
  79. BIN  Sublime Text 2/Packages/Erlang/Indentation Rules.tmPreferences.cache
  80. BIN  Sublime Text 2/Packages/Erlang/Macro Symbols.tmPreferences.cache
  81. BIN  Sublime Text 2/Packages/Erlang/Module Symbols.tmPreferences.cache
  82. BIN  Sublime Text 2/Packages/Erlang/Record Symbols.tmPreferences.cache
  83. BIN  Sublime Text 2/Packages/Erlang/Symbol Overrides.tmPreferences.cache
  84. +4 −0 Sublime Text 2/Packages/Git/.gitignore
  85. +28 −0 Sublime Text 2/Packages/Git/CONTRIBUTORS
  86. +213 −0 Sublime Text 2/Packages/Git/Default.sublime-commands
  87. +3 −0  Sublime Text 2/Packages/Git/Git Commit Message.sublime-settings
  88. +42 −0 Sublime Text 2/Packages/Git/Git.sublime-settings
  89. +125 −0 Sublime Text 2/Packages/Git/Main.sublime-menu
  90. +22 −0 Sublime Text 2/Packages/Git/README.markdown
  91. +115 −0 Sublime Text 2/Packages/Git/add.py
  92. +130 −0 Sublime Text 2/Packages/Git/annotate.py
  93. +168 −0 Sublime Text 2/Packages/Git/commit.py
  94. +62 −0 Sublime Text 2/Packages/Git/diff.py
  95. +90 −0 Sublime Text 2/Packages/Git/flow.py
  96. +333 −0 Sublime Text 2/Packages/Git/git.py
  97. +189 −0 Sublime Text 2/Packages/Git/history.py
  98. +159 −0 Sublime Text 2/Packages/Git/repo.py
  99. +47 −0 Sublime Text 2/Packages/Git/stash.py
  100. +63 −0 Sublime Text 2/Packages/Git/status.py
  101. +58 −0 Sublime Text 2/Packages/Git/statusbar.py
  102. +18 −0 Sublime Text 2/Packages/Git/syntax/Git Blame.JSON-tmLanguage
  103. +53 −0 Sublime Text 2/Packages/Git/syntax/Git Blame.tmLanguage
  104. +21 −0 Sublime Text 2/Packages/Git/syntax/Git Commit Message.JSON-tmLanguage
  105. +51 −0 Sublime Text 2/Packages/Git/syntax/Git Commit Message.tmLanguage
  106. +31 −0 Sublime Text 2/Packages/Git/syntax/Git Graph.JSON-tmLanguage
  107. +90 −0 Sublime Text 2/Packages/Git/syntax/Git Graph.tmLanguage
  108. BIN  Sublime Text 2/Packages/Go/Comments.tmPreferences.cache
  109. BIN  Sublime Text 2/Packages/Go/Go.tmLanguage.cache
  110. BIN  Sublime Text 2/Packages/Graphviz/DOT.tmLanguage.cache
  111. BIN  Sublime Text 2/Packages/Groovy/Groovy.tmLanguage.cache
  112. BIN  Sublime Text 2/Packages/Groovy/Symbol List%3A Class Variables.tmPreferences.cache
  113. BIN  Sublime Text 2/Packages/Groovy/Symbol List%3A Classes.tmPreferences.cache
  114. BIN  Sublime Text 2/Packages/Groovy/Symbol List%3A Methods.tmPreferences.cache
  115. BIN  Sublime Text 2/Packages/Groovy/Symbol List%3A Variables.tmPreferences.cache
  116. BIN  Sublime Text 2/Packages/HTML/Comments.tmPreferences.cache
  117. BIN  Sublime Text 2/Packages/HTML/Symbol List - ID.tmPreferences.cache
  118. BIN  Sublime Text 2/Packages/HTML/encode_html_entities.pyc
  119. BIN  Sublime Text 2/Packages/HTML/html_completions.pyc
  120. BIN  Sublime Text 2/Packages/Haskell/Comments.tmPreferences.cache
  121. BIN  Sublime Text 2/Packages/Haskell/Haskell.tmLanguage.cache
  122. BIN  Sublime Text 2/Packages/Haskell/Indent Patterns.tmPreferences.cache
  123. BIN  Sublime Text 2/Packages/Haskell/Literate Haskell.tmLanguage.cache
  124. BIN  Sublime Text 2/Packages/Haskell/Symbol List.tmPreferences.cache
  125. BIN  Sublime Text 2/Packages/Java/Comments.tmPreferences.cache
  126. BIN  Sublime Text 2/Packages/Java/Java Server Pages (JSP).tmLanguage.cache
  127. BIN  Sublime Text 2/Packages/Java/Java.tmLanguage.cache
  128. BIN  Sublime Text 2/Packages/Java/JavaDoc.tmLanguage.cache
  129. BIN  Sublime Text 2/Packages/Java/JavaProperties.tmLanguage.cache
  130. BIN  Sublime Text 2/Packages/Java/Symbol List%3A Classes.tmPreferences.cache
  131. BIN  Sublime Text 2/Packages/Java/Symbol List%3A Inner Class Methods.tmPreferences.cache
  132. BIN  Sublime Text 2/Packages/Java/Symbol List%3A Inner Classes.tmPreferences.cache
  133. BIN  Sublime Text 2/Packages/Java/Symbol List%3A Inner Inner Class Methods.tmPreferences.cache
  134. BIN  Sublime Text 2/Packages/Java/Symbol List%3A Inner Inner Classes.tmPreferences.cache
  135. BIN  Sublime Text 2/Packages/Java/Symbol List%3A Method.tmPreferences.cache
  136. BIN  Sublime Text 2/Packages/JavaScript/Comments.tmPreferences.cache
  137. BIN  Sublime Text 2/Packages/JavaScript/JSON.tmLanguage.cache
  138. BIN  Sublime Text 2/Packages/JavaScript/JavaScript.tmLanguage.cache
  139. BIN  Sublime Text 2/Packages/JavaScript/Symbol List Banned.tmPreferences.cache
  140. BIN  Sublime Text 2/Packages/JavaScript/Symbol List Class.tmPreferences.cache
  141. BIN  Sublime Text 2/Packages/JavaScript/Symbol List Function.tmPreferences.cache
  142. BIN  Sublime Text 2/Packages/JavaScript/Symbol List Instance.tmPreferences.cache
  143. BIN  Sublime Text 2/Packages/JavaScript/Symbol List Sub 1.tmPreferences.cache
  144. BIN  Sublime Text 2/Packages/JavaScript/Symbol List Sub 2.tmPreferences.cache
  145. +2 −0  Sublime Text 2/Packages/JsFormat/.gitignore
  146. +6 −0 Sublime Text 2/Packages/JsFormat/Default (Linux).sublime-keymap
  147. +6 −0 Sublime Text 2/Packages/JsFormat/Default (OSX).sublime-keymap
  148. +6 −0 Sublime Text 2/Packages/JsFormat/Default (Windows).sublime-keymap
  149. +3 −0  Sublime Text 2/Packages/JsFormat/JsFormat.sublime-commands
  150. +11 −0 Sublime Text 2/Packages/JsFormat/JsFormat.sublime-settings
  151. +7 −7 Sublime Text 2/Packages/{CoffeeCompile/Menus → JsFormat}/Main.sublime-menu
  152. +83 −0 Sublime Text 2/Packages/JsFormat/README.md
  153. +71 −0 Sublime Text 2/Packages/JsFormat/js_formatter.py
  154. +1,158 −0 Sublime Text 2/Packages/JsFormat/jsbeautifier.py
  155. +1 −0  Sublime Text 2/Packages/JsFormat/package-metadata.json
  156. BIN  Sublime Text 2/Packages/LaTeX/Bibtex.tmLanguage.cache
  157. BIN  Sublime Text 2/Packages/LaTeX/Comments.tmPreferences.cache
  158. BIN  Sublime Text 2/Packages/LaTeX/LaTeX Beamer.tmLanguage.cache
  159. BIN  Sublime Text 2/Packages/LaTeX/LaTeX Log.tmLanguage.cache
  160. BIN  Sublime Text 2/Packages/LaTeX/LaTeX Memoir.tmLanguage.cache
  161. BIN  Sublime Text 2/Packages/LaTeX/LaTeX.tmLanguage.cache
  162. BIN  Sublime Text 2/Packages/LaTeX/TeX Math.tmLanguage.cache
  163. BIN  Sublime Text 2/Packages/LaTeX/TeX.tmLanguage.cache
  164. BIN  Sublime Text 2/Packages/Lisp/Comments.tmPreferences.cache
  165. BIN  Sublime Text 2/Packages/Lisp/Lisp.tmLanguage.cache
  166. BIN  Sublime Text 2/Packages/Lua/Comments.tmPreferences.cache
  167. BIN  Sublime Text 2/Packages/Lua/Indent.tmPreferences.cache
  168. BIN  Sublime Text 2/Packages/Lua/Lua.tmLanguage.cache
  169. BIN  Sublime Text 2/Packages/Makefile/Makefile.tmLanguage.cache
  170. BIN  Sublime Text 2/Packages/Makefile/Miscellaneous.tmPreferences.cache
  171. +24 −0 Sublime Text 2/Packages/Markdown Preview/MarkdownPreview.py
  172. +13 −1 Sublime Text 2/Packages/Markdown Preview/MarkdownPreview.sublime-settings
  173. BIN  Sublime Text 2/Packages/Markdown Preview/lib/linux-x32/libssl-0.9.8/_ssl.so
  174. BIN  Sublime Text 2/Packages/Markdown Preview/lib/linux-x32/libssl-1.0.0/_ssl.so
  175. BIN  Sublime Text 2/Packages/Markdown Preview/lib/linux-x32/libssl-10/_ssl.so
  176. BIN  Sublime Text 2/Packages/Markdown Preview/lib/linux-x64/libssl-0.9.8/_ssl.so
  177. BIN  Sublime Text 2/Packages/Markdown Preview/lib/linux-x64/libssl-1.0.0/_ssl.so
  178. BIN  Sublime Text 2/Packages/Markdown Preview/lib/linux-x64/libssl-10/_ssl.so
  179. +437 −0 Sublime Text 2/Packages/Markdown Preview/lib/linux/ssl.py
  180. +1 −1  Sublime Text 2/Packages/Markdown Preview/package-metadata.json
  181. BIN  Sublime Text 2/Packages/Markdown/Indent%3A Raw.tmPreferences.cache
  182. BIN  Sublime Text 2/Packages/Markdown/Markdown.tmLanguage.cache
  183. BIN  Sublime Text 2/Packages/Markdown/MultiMarkdown.tmLanguage.cache
  184. BIN  Sublime Text 2/Packages/Markdown/Symbol List - Heading.tmPreferences.cache
  185. +0 −111 Sublime Text 2/Packages/MarkdownEditing/Default (OSX).sublime-keymap
  186. +0 −2  Sublime Text 2/Packages/MarkdownEditing/README.md
  187. BIN  Sublime Text 2/Packages/Matlab/Indent.tmPreferences.cache
  188. BIN  Sublime Text 2/Packages/Matlab/Matlab.tmLanguage.cache
  189. BIN  Sublime Text 2/Packages/Matlab/Miscellaneous.tmPreferences.cache
  190. BIN  Sublime Text 2/Packages/Matlab/Symbols.tmPreferences.cache
  191. BIN  Sublime Text 2/Packages/OCaml/Indent rules.tmPreferences.cache
  192. BIN  Sublime Text 2/Packages/OCaml/Miscellaneous.tmPreferences.cache
  193. BIN  Sublime Text 2/Packages/OCaml/OCaml.tmLanguage.cache
  194. BIN  Sublime Text 2/Packages/OCaml/OCamllex.tmLanguage.cache
  195. BIN  Sublime Text 2/Packages/OCaml/OCamlyacc.tmLanguage.cache
  196. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Classes.tmPreferences.cache
  197. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Exceptions.tmPreferences.cache
  198. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Ocamllex pattern definition.tmPreferences.cache
  199. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Ocamllex pattern references.tmPreferences.cache
  200. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Ocamllex rules.tmPreferences.cache
  201. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Ocamlyacc non-terminal definition.tmPreferences.cache
  202. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Ocamlyacc non-terminal reference.tmPreferences.cache
  203. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Ocamlyacc token definition.tmPreferences.cache
  204. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Ocamlyacc token reference.tmPreferences.cache
  205. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Types.tmPreferences.cache
  206. BIN  Sublime Text 2/Packages/OCaml/Symbol List%3A Variants.tmPreferences.cache
  207. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Classes.tmPreferences.cache
  208. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Exceptions.tmPreferences.cache
  209. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Ocamllex pattern definition.tmPreferences.cache
  210. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Ocamllex pattern references.tmPreferences.cache
  211. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Ocamllex rules.tmPreferences.cache
  212. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Ocamlyacc non-terminal definition.tmPreferences.cache
  213. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Ocamlyacc non-terminal reference.tmPreferences.cache
  214. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Ocamlyacc token definition.tmPreferences.cache
  215. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Ocamlyacc token reference.tmPreferences.cache
  216. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Types.tmPreferences.cache
  217. BIN  Sublime Text 2/Packages/OCaml/Symbol List_ Variants.tmPreferences.cache
  218. BIN  Sublime Text 2/Packages/OCaml/camlp4.tmLanguage.cache
  219. BIN  Sublime Text 2/Packages/Objective-C/Objective-C++.tmLanguage.cache
  220. BIN  Sublime Text 2/Packages/Objective-C/Objective-C.tmLanguage.cache
  221. BIN  Sublime Text 2/Packages/PHP/Comments.tmPreferences.cache
  222. BIN  Sublime Text 2/Packages/PHP/PHP.tmLanguage.cache
  223. BIN  Sublime Text 2/Packages/PHP/Symbol List.tmPreferences.cache
  224. +9 −2 Sublime Text 2/Packages/Package Control/Package Control.py
  225. BIN  Sublime Text 2/Packages/Package Control/Package Control.pyc
  226. BIN  Sublime Text 2/Packages/Package Control/lib/all/semver.pyc
  227. +1 −1  Sublime Text 2/Packages/Package Control/package-metadata.json
  228. BIN  Sublime Text 2/Packages/Perl/Miscellaneous.tmPreferences.cache
  229. BIN  Sublime Text 2/Packages/Perl/Perl.tmLanguage.cache
  230. BIN  Sublime Text 2/Packages/Python/Regular Expressions (Python).tmLanguage.cache
  231. BIN  Sublime Text 2/Packages/Python/Symbol List Hide Decorator.tmPreferences.cache
  232. BIN  Sublime Text 2/Packages/Python/Symbol List.tmPreferences.cache
  233. BIN  Sublime Text 2/Packages/R/Comments.tmPreferences.cache
  234. BIN  Sublime Text 2/Packages/R/Methods.tmPreferences.cache
  235. BIN  Sublime Text 2/Packages/R/R Console.tmLanguage.cache
  236. BIN  Sublime Text 2/Packages/R/R.tmLanguage.cache
  237. BIN  Sublime Text 2/Packages/R/Rd (R Documentation).tmLanguage.cache
  238. BIN  Sublime Text 2/Packages/R/Symbol List (Rd Documentation).tmPreferences.cache
  239. BIN  Sublime Text 2/Packages/Rails/HTML (Rails).tmLanguage.cache
  240. BIN  Sublime Text 2/Packages/Rails/JavaScript (Rails).tmLanguage.cache
  241. BIN  Sublime Text 2/Packages/Rails/Ruby Haml Comments.tmPreferences.cache
  242. BIN  Sublime Text 2/Packages/Rails/Ruby Haml.tmLanguage.cache
  243. BIN  Sublime Text 2/Packages/Rails/Ruby on Rails.tmLanguage.cache
  244. BIN  Sublime Text 2/Packages/Rails/SQL (Rails).tmLanguage.cache
  245. BIN  Sublime Text 2/Packages/Rails/Template (ERB).tmPreferences.cache
  246. BIN  Sublime Text 2/Packages/Rails/Template (Haml).tmPreferences.cache
  247. +31 −0 Sublime Text 2/Packages/RailsCasts Colour Scheme/README.md
  248. +289 −0 Sublime Text 2/Packages/RailsCasts Colour Scheme/RailsCastsColorScheme.tmTheme
  249. BIN  Sublime Text 2/Packages/RailsCasts Colour Scheme/RailsCastsColorScheme.tmTheme.cache
  250. +1 −0  Sublime Text 2/Packages/RailsCasts Colour Scheme/package-metadata.json
  251. BIN  Sublime Text 2/Packages/Regular Expressions/RegExp.tmLanguage.cache
  252. BIN  Sublime Text 2/Packages/RestructuredText/Comments.tmPreferences.cache
  253. BIN  Sublime Text 2/Packages/RestructuredText/reStructuredText.tmLanguage.cache
  254. BIN  Sublime Text 2/Packages/Ruby/Comments.tmPreferences.cache
  255. BIN  Sublime Text 2/Packages/Ruby/Miscellaneous.tmPreferences.cache
  256. BIN  Sublime Text 2/Packages/Ruby/Symbo List%3A Method.tmPreferences.cache
  257. BIN  Sublime Text 2/Packages/Ruby/Symbol List%3A No Function Call.tmPreferences.cache
  258. BIN  Sublime Text 2/Packages/SQL/Comments.tmPreferences.cache
  259. BIN  Sublime Text 2/Packages/SQL/Miscellaneous.tmPreferences.cache
  260. BIN  Sublime Text 2/Packages/SQL/SQL.tmLanguage.cache
  261. BIN  Sublime Text 2/Packages/Scala/Comments.tmPreferences.cache
  262. BIN  Sublime Text 2/Packages/Scala/Scala.tmLanguage.cache
  263. BIN  Sublime Text 2/Packages/Scala/Symbols.tmPreferences.cache
  264. BIN  Sublime Text 2/Packages/ShellScript/Comments.tmPreferences.cache
  265. BIN  Sublime Text 2/Packages/ShellScript/Miscellaneous.tmPreferences.cache
  266. BIN  Sublime Text 2/Packages/ShellScript/Shell-Unix-Generic.tmLanguage.cache
  267. +6 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/.gitignore
  268. +3 −0  Sublime Text 2/Packages/SublimeAStyleFormatter/.gitmodules
  269. +280 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/AStyleFormat.py
  270. +156 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/AStyleOptions.py
  271. +10 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/Default (Linux).sublime-keymap
  272. +10 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/Default (OSX).sublime-keymap
  273. +10 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/Default (Windows).sublime-keymap
  274. +11 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/Default.sublime-commands
  275. +70 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/Main.sublime-menu
  276. +165 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/README.creole
  277. +232 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/SublimeAStyleFormatter.sublime-settings
  278. +177 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/diff_match_patch/COPYING
  279. +43 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/diff_match_patch/README.txt
  280. +2 −0  Sublime Text 2/Packages/SublimeAStyleFormatter/diff_match_patch/__init__.py
  281. +1,919 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/diff_match_patch/diff_match_patch.py
  282. +869 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/diff_match_patch/diff_match_patch_test.py
  283. +7 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/messages.json
  284. +8 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/messages/1.3.txt
  285. +6 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/messages/1.7.1.txt
  286. +3 −0  Sublime Text 2/Packages/SublimeAStyleFormatter/messages/1.7.3.txt
  287. +3 −0  Sublime Text 2/Packages/SublimeAStyleFormatter/messages/1.7.txt
  288. +22 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/messages/install.txt
  289. +8 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/package.json
  290. +25 −0 Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/__init__.py
  291. 0  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_linux_libcpp6_x86/__init__.py
  292. BIN  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_linux_libcpp6_x86/pyastyle.so
  293. 0  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_linux_libcpp6_x86_64/__init__.py
  294. BIN  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_linux_libcpp6_x86_64/pyastyle.so
  295. 0  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_local_arch/__init__.py
  296. 0  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_macosx_universal/__init__.py
  297. BIN  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_macosx_universal/pyastyle.so
  298. 0  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_win32/__init__.py
  299. BIN  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_win32/pyastyle.pyd
  300. 0  Sublime Text 2/Packages/SublimeAStyleFormatter/pyastyle/_win64/__init__.py
Sorry, we could not display the entire diff because too many files (394) changed.
BIN  Sublime Text 2/Packages/ASP/ASP.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/ASP/HTML-ASP.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/ActionScript/ActionScript.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/AppleScript/AppleScript.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Batch File/Batch File.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/C#/Build.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/C#/C#.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/C++/C++.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/C++/C.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/C++/Comments (C++).tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/C++/Symbol List - Indent Class Methods.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/C++/Symbol List - Prefix Banner Items.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/CSS/CSS.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/CSS/Comments.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/CSS/Symbol List Group.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/CSS/Symbol List.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/CSS/css_completions.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Clojure/Clojure.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Clojure/Comment.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Clojure/Symbol List.tmPreferences.cache
View
Binary file not shown
1  Sublime Text 2/Packages/CoffeeCompile/.gitignore
View
@@ -1 +0,0 @@
-*.pyc
49 Sublime Text 2/Packages/CoffeeCompile/CoffeeCompile.sublime-settings
View
@@ -1,49 +0,0 @@
-{
- /**
- * Where your `node` executable lives. If this is not specified, then
- * it is expected to be on Sublime's path.
- */
- "coffee_path": ""
-
- /**
- * Where your `node` executable lives. If this is not specified, then
- * it is expected to be on Sublime's path.
- */
-, "node_path": ""
-
- /**
- * How should the plugin invoke your coffee executable.
- *
- * This can be the name of the executable if its in your path,
- * or it can be the absolute path to it (although in that case,
- * try to use the `coffee_path` setting).
- *
- * You can find where your executable is by running "which coffee"
- * in your terminal.
- *
- * Defaults:
- * Windows -> 'coffee.cmd'
- * Linux/OSX -> 'coffee'
- */
-, "coffee_executable": ""
-
-
- /**
- * Compile without a top-level function wrapper.
- */
-, "bare": false
-
-
- /**
- * Enables support for the CoffeeScriptRedux compiler. Experimental feature!
- */
-, "coffee_script_redux": false
-
-
- /**
- * The location of your CoffeeScriptRedux compiler. This option does nothing
- * if the `coffee_script_redux` flag is off.
- */
-, "redux_coffee_path": ""
-
-}
3  Sublime Text 2/Packages/CoffeeCompile/Keymaps/Default (Linux).sublime-keymap
View
@@ -1,3 +0,0 @@
-[
- {"keys": ["ctrl+shift+c"], "command": "coffee_compile"}
-]
3  Sublime Text 2/Packages/CoffeeCompile/Keymaps/Default (OSX).sublime-keymap
View
@@ -1,3 +0,0 @@
-[
- {"keys": ["ctrl+shift+c"], "command": "coffee_compile"}
-]
3  Sublime Text 2/Packages/CoffeeCompile/Keymaps/Default (Windows).sublime-keymap
View
@@ -1,3 +0,0 @@
-[
- {"keys": ["ctrl+shift+c"], "command": "coffee_compile"}
-]
3  Sublime Text 2/Packages/CoffeeCompile/Menus/Context.sublime-menu
View
@@ -1,3 +0,0 @@
-[
- { "command": "coffee_compile" }
-]
59 Sublime Text 2/Packages/CoffeeCompile/README.md
View
@@ -1,59 +0,0 @@
-#Sublime Text 2 - Coffee Compile
-
-This package allows you to compile some or all of your CoffeeScript right from the editor.
-The JavaScript output will even have syntax highlighting!
-
-
-##Usage
-
-Just highlight some CoffeeScript code, right click and select the _Coffee Compile_ command.
-To compile the whole file, don't highlight any text.
-
-
-## Common Issues
-
-### OSError: [Errno 2] No such file or directory
-
-This is happening because the plugin can't find `coffee` (or `coffee.cmd` on Windows). To fix this,
-set the `coffee_path` to the executable's directory.
-
-If you don't know where `coffee` is, run the following in your terminal: ``dirname `which coffee` ``
-
-### env: node: No such file or directory
-
-This is happening because `coffee` can't find your `node` executable. To fix this, set the `node_path` setting
-to the executable's directory.
-
-If you don't know where `node` is, run the following in your terminal: ``dirname `which node` ``
-
-
-## Install
-
-### Package Control
-Install the _CoffeeCompile_ package from [Package Control](http://wbond.net/sublime_packages/package_control).
-
-
-### Manual
-
-Clone this repository from your Sublime packages directory:
-
-#### Linux
-```
-$ cd ~/.config/sublime-text-2/Packages
-$ git clone https://github.com/surjikal/sublime-coffee-compile "Coffee Compile"
-```
-
-#### Macosx
-```
-$ cd "~/Library/Application Support/Sublime Text 2/Packages"
-$ git clone https://github.com/surjikal/sublime-coffee-compile "Coffee Compile"
-```
-
-#### Windows (manual install untested)
-```
-$ cd "%APPDATA%\Sublime Text 2"
-$ git clone https://github.com/surjikal/sublime-coffee-compile "Coffee Compile"
-```
-
-## Screenshot
-![CoffeeCompile Screenshot](http://i.imgur.com/2J49Q.png)
147 Sublime Text 2/Packages/CoffeeCompile/coffee_compile.py
View
@@ -1,147 +0,0 @@
-import platform
-import subprocess
-import os
-
-import sublime_plugin
-import sublime
-
-
-PLATFORM = platform.system()
-PLATFORM_IS_WINDOWS = PLATFORM is 'Windows'
-PLATFORM_IS_OSX = PLATFORM is 'Darwin'
-
-
-class CoffeeCompileCommand(sublime_plugin.TextCommand):
-
- PANEL_NAME = 'coffeecompile_output'
- DEFAULT_COFFEE_EXECUTABLE = 'coffee.cmd' if PLATFORM_IS_WINDOWS else 'coffee'
- SETTINGS = sublime.load_settings("CoffeeCompile.sublime-settings")
-
- def run(self, edit):
- text = self._get_text_to_compile()
- text = text.encode('utf8')
- window = self.view.window()
-
- javascript, error = self._compile(text, window)
- self._write_output_to_panel(window, javascript, error)
-
- def _compile(self, text, window):
- path = self._get_path()
- args = self._get_coffee_args()
- print "[CoffeeCompile] Using PATH=%s" % path
- try:
- return self._execute_command(args, text, path)
- except OSError as e:
- error_message = 'CoffeeCompile error: '
- if e.errno is 2:
- error_message += 'Could not find your "coffee" executable. '
- error_message += str(e)
-
- sublime.status_message(error_message)
- return ('', error_message)
-
- def _execute_command(self, args, text, path=None):
-
- # This is needed for Windows... not sure why. See:
- # https://github.com/surjikal/sublime-coffee-compile/issues/13
- if path and PLATFORM_IS_WINDOWS:
- os.environ['PATH'] = path
- path = None
-
- env = {'PATH': path} if path else None
- process = subprocess.Popen(args,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT,
- startupinfo=self._get_startupinfo(),
- env=env)
- return process.communicate(text)
-
- def _write_output_to_panel(self, window, javascript, error):
- panel = window.get_output_panel(self.PANEL_NAME)
- panel.set_syntax_file('Packages/JavaScript/JavaScript.tmLanguage')
-
- text = javascript or str(error)
- text = text.decode('utf8')
- self._write_to_panel(panel, text)
-
- window.run_command('show_panel', {'panel': 'output.%s' % self.PANEL_NAME})
-
- def _write_to_panel(self, panel, text):
- panel.set_read_only(False)
- edit = panel.begin_edit()
- panel.insert(edit, 0, text)
- panel.end_edit(edit)
- panel.sel().clear()
- panel.set_read_only(True)
-
- def _get_text_to_compile(self):
- region = self._get_selected_region() if self._editor_contains_selected_text() \
- else self._get_region_for_entire_file()
- return self.view.substr(region)
-
- def _get_region_for_entire_file(self):
- return sublime.Region(0, self.view.size())
-
- def _get_selected_region(self):
- return self.view.sel()[0]
-
- def _editor_contains_selected_text(self):
- for region in self.view.sel():
- if not region.empty():
- return True
- return False
-
- def _get_coffee_args(self):
- if self.SETTINGS.get('coffee_script_redux'):
- print "[CoffeeCompile] Using coffee script redux."
- return self._get_redux_coffee_args()
- else:
- print "[CoffeeCompile] Using vanilla compiler."
- return self._get_vanilla_coffee_args()
-
- def _get_vanilla_coffee_args(self):
- coffee_executable = self._get_coffee_executable()
-
- args = [coffee_executable, '--stdio', '--print', '--lint']
-
- if self.SETTINGS.get('bare'):
- args.append('--bare')
-
- return args
-
- def _get_redux_coffee_args(self):
- coffee_executable = self._get_coffee_executable()
- return [coffee_executable, '--js']
-
- def _get_coffee_executable(self):
- return self.SETTINGS.get('coffee_executable') or self.DEFAULT_COFFEE_EXECUTABLE
-
- def _get_startupinfo(self):
- if PLATFORM_IS_WINDOWS:
- info = subprocess.STARTUPINFO()
- info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
- info.wShowWindow = subprocess.SW_HIDE
- return info
- return None
-
- def _get_path(self):
- node_path = self.SETTINGS.get('node_path')
- coffee_path = self._get_coffee_path()
-
- path = os.environ.get('PATH', '').split(':')
-
- if node_path:
- path.append(node_path)
- if coffee_path:
- path.append(coffee_path)
-
- return ":".join(path)
-
- def _get_coffee_path(self):
- coffee_path = self.SETTINGS.get('coffee_path')
-
- if self.SETTINGS.get('coffee_script_redux'):
- return self.SETTINGS.get('redux_coffee_path') or coffee_path
-
- return coffee_path
1  Sublime Text 2/Packages/CoffeeCompile/package-metadata.json
View
@@ -1 +0,0 @@
-{"url": "https://github.com/surjikal/sublime-coffee-compile", "version": "2012.12.13.18.59.26", "description": "Preview compiled CoffeeScript in your editor!"}
BIN  Sublime Text 2/Packages/Color Scheme - Default/Monokai.tmTheme.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Color Scheme - Default/Twilight.tmTheme.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/D/Comments.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/D/D.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/D/Symbol List-Method-Constructor.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/DashDoc/DashDoc.pyc
View
Binary file not shown
4 Sublime Text 2/Packages/Default/Default (Linux).sublime-mousemap
View
@@ -86,9 +86,11 @@
// Middle click paste
{ "button": "button3", "command": "paste_selection_clipboard" },
- // Switch files with buttons 4 and 5
+ // Switch files with buttons 4 and 5, as well as 8 and 9
{ "button": "button4", "modifiers": [], "command": "prev_view" },
{ "button": "button5", "modifiers": [], "command": "next_view" },
+ { "button": "button8", "modifiers": [], "command": "prev_view" },
+ { "button": "button9", "modifiers": [], "command": "next_view" },
// Change font size with ctrl+scroll wheel
{ "button": "scroll_down", "modifiers": ["ctrl"], "command": "decrease_font_size" },
2  Sublime Text 2/Packages/Default/Find in Files.sublime-menu
View
@@ -1,6 +1,6 @@
[
{ "command": "clear_location", "caption": "Clear" },
- { "command": "add_directory", "caption": "Add Directory" },
+ { "command": "add_directory", "caption": "Add Folder" },
{ "command": "add_where_snippet", "args": {"snippet": "*.${0:txt}"}, "caption": "Add Include Filter" },
{ "command": "add_where_snippet", "args": {"snippet": "-*.${0:txt}"}, "caption": "Add Exclude Filter" },
{ "command": "add_where_snippet", "args": {"snippet": "<open folders>"}, "caption": "Add Open Folders" },
BIN  Sublime Text 2/Packages/Default/Meta Info Summary.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/Miscellaneous.tmPreferences.cache
View
Binary file not shown
2  Sublime Text 2/Packages/Default/Preferences.sublime-settings
View
@@ -43,7 +43,7 @@
"spell_check": false,
// The number of spaces a tab is considered equal to
- "tab_size": 2,
+ "tab_size": 4,
// Set to true to insert spaces when tab is pressed
"translate_tabs_to_spaces": false,
BIN  Sublime Text 2/Packages/Default/Startup.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/Symbol List.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/Syntax Summary.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/comment.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/copy_path.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/delete_word.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/detect_indentation.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/duplicate_line.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/echo.pyc
View
Binary file not shown
2  Sublime Text 2/Packages/Default/exec.py
View
@@ -180,7 +180,7 @@ def append_data(self, proc, data):
try:
str = data.decode(self.encoding)
except:
- str = "[Decode error - output not " + self.encoding + "]"
+ str = "[Decode error - output not " + self.encoding + "]\n"
proc = None
# Normalize newlines, Sublime Text always uses a single \n separator
BIN  Sublime Text 2/Packages/Default/exec.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/fold.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/font.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/goto_line.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/indentation.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/kill_ring.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/mark.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/new_templates.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/open_file_settings.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/open_in_browser.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/paragraph.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/save_on_focus_lost.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/scroll.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/send2trash/__init__.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/send2trash/plat_osx.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/set_unsaved_view_name.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/side_bar.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/sort.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/swap_line.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/switch_file.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/transform.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/transpose.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Default/trim_trailing_white_space.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Diff/diff.pyc
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/Comments.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/Erlang.tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/Function Symbols.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/HTML (Erlang).tmLanguage.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/Indentation Rules.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/Macro Symbols.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/Module Symbols.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/Record Symbols.tmPreferences.cache
View
Binary file not shown
BIN  Sublime Text 2/Packages/Erlang/Symbol Overrides.tmPreferences.cache
View
Binary file not shown
4 Sublime Text 2/Packages/Git/.gitignore
View
@@ -0,0 +1,4 @@
+*.pyc
+*.tmLanguage.cache
+.DS_Store
+package-metadata.json
28 Sublime Text 2/Packages/Git/CONTRIBUTORS
View
@@ -0,0 +1,28 @@
+These are the people who helped make this plugin:
+
+David Lynch <kemayo@gmail.com>
+Sheldon Els <sheldon.els@gmail.com>
+Nick Fisher <spadgos@gmail.com>
+Can Yilmaz <can@potatolondon.com>
+Stefan Buhrmester <buhrmi@gmail.com>
+Rafal Chlodnicki <rchlodnicki@opera.com>
+Daniël de Kok <me@danieldk.eu>
+David Baumgold <david@davidbaumgold.com>
+Iuri de Silvio <iurisilvio@gmail.com>
+joshuacc <josh@designpepper.com>
+misfo <tedwardo2@gmail.com>
+Kevin Smith <kevin@ilovecode.de>
+Κώστας Καραχάλιος <kostas.karachalios@me.com>
+Dominique Wahli <dominique.wahli@solvaxis.com>
+Fraser Graham <frasergraham@me.com>
+Hamid Nazari <hamidnazari@ymail.com>
+Jeff Sandberg <paradox460@gmail.com>
+Joshua Clanton <joshua.clanton@gmail.com>
+Maxim Sukharev <max@smacker.ru>
+Niklas Hambüchen <mail@nh2.me>
+Patrik Ring <me@patrikring.se>
+Scott Bowers <sbbowers@gmail.com>
+Weslly Honorato <weslly.honorato@gmail.com>
+brcooley <brcooley@cs.wm.edu>
+jdc0589 <jdc0589@gmail.com>
+Adam Venturella <aventurella@gmail.com>
213 Sublime Text 2/Packages/Git/Default.sublime-commands
View
@@ -0,0 +1,213 @@
+[
+ { "caption": "Git: Init",
+ "command": "git_init"
+ }
+ ,{
+ "caption": "Git: Blame",
+ "command": "git_blame"
+ }
+ ,{
+ "caption": "Git: New Tag",
+ "command": "git_new_tag"
+ }
+ ,{
+ "caption": "Git: Show Tags",
+ "command": "git_show_tags"
+ }
+ ,{
+ "caption": "Git: Push Tags",
+ "command": "git_push_tags"
+ }
+ ,{
+ "caption": "Git: Log Current File",
+ "command": "git_log"
+ }
+ ,{
+ "caption": "Git: Log All",
+ "command": "git_log_all"
+ }
+ ,{
+ "caption": "Git: Graph Current File",
+ "command": "git_graph"
+ }
+ ,{
+ "caption": "Git: Graph All",
+ "command": "git_graph_all"
+ }
+ ,{
+ "caption": "Git: Diff Current File",
+ "command": "git_diff"
+ }
+ ,{
+ "caption": "Git: Diff All",
+ "command": "git_diff_all"
+ }
+ ,{
+ "caption": "Git: Diff Staged",
+ "command": "git_diff_commit"
+ }
+ ,{
+ "caption": "Git: Diff Tool Current File",
+ "command": "git_diff_tool"
+ }
+ ,{
+ "caption": "Git: Diff Tool All",
+ "command": "git_diff_tool_all"
+ }
+ ,{
+ "caption": "Git: Commit",
+ "command": "git_commit"
+ }
+ ,{
+ "caption": "Git: Amend Commit",
+ "command": "git_commit_amend"
+ }
+ ,{
+ "caption": "Git: Quick Commit",
+ "command": "git_quick_commit"
+ }
+ ,{
+ "caption": "Git: Status",
+ "command": "git_status"
+ }
+ ,{
+ "caption": "Git: Open Modified Files",
+ "command": "git_open_modified_files"
+ }
+ ,{
+ "caption": "Git: New Branch",
+ "command": "git_new_branch"
+ }
+ ,{
+ "caption": "Git: Change Branch",
+ "command": "git_branch"
+ }
+ ,{
+ "caption": "Git: Merge Branch",
+ "command": "git_merge"
+ }
+ ,{
+ "caption": "Git: Delete Branch",
+ "command": "git_delete_branch"
+ }
+ ,{
+ "caption": "Git: Stash Changes",
+ "command": "git_stash"
+ }
+ ,{
+ "caption": "Git: Stash Pop",
+ "command": "git_stash_pop"
+ }
+ ,{
+ "caption": "Git: Stash Apply",
+ "command": "git_stash_apply"
+ }
+ ,{
+ "caption": "Git: Stash Drop",
+ "command": "git_stash_drop"
+ }
+ ,{
+ "caption": "Git: Add Current File",
+ "command": "git_add"
+ }
+ ,{
+ "caption": "Git: Add...",
+ "command": "git_add_choice"
+ }
+ ,{
+ "caption": "Git: Checkout Current File",
+ "command": "git_checkout"
+ }
+ ,{
+ "caption": "Git: Fetch",
+ "command": "git_fetch"
+ }
+ ,{
+ "caption": "Git: Pull",
+ "command": "git_pull"
+ }
+ ,{
+ "caption": "Git: Pull Current Branch",
+ "command": "git_pull_current_branch"
+ }
+ ,{
+ "caption": "Git: Push",
+ "command": "git_push"
+ }
+ ,{
+ "caption": "Git: Push Current Branch",
+ "command": "git_push_current_branch"
+ }
+ ,{
+ "caption": "Git: Show Current File",
+ "command": "git_show"
+ }
+ ,{
+ "caption": "Git: Toggle Annotations",
+ "command": "git_toggle_annotations"
+ }
+ ,{
+ "caption": "Git: Custom Command",
+ "command": "git_custom"
+ }
+ ,{
+ "caption": "Git Flow: Feature Start",
+ "command": "git_flow_feature_start"
+ }
+ ,{
+ "caption": "Git Flow: Feature Finish",
+ "command": "git_flow_feature_finish"
+ }
+ ,{
+ "caption": "Git Flow: Release Start",
+ "command": "git_flow_release_start"
+ }
+ ,{
+ "caption": "Git Flow: Release Finish",
+ "command": "git_flow_release_finish"
+ }
+ ,{
+ "caption": "Git Flow: Hotfix Start",
+ "command": "git_flow_hotfix_start"
+ }
+ ,{
+ "caption": "Git Flow: Hotfix Finish",
+ "command": "git_flow_hotfix_finish"
+ }
+ ,{
+ "caption": "Git: Open...",
+ "command": "git_open_file"
+ }
+ ,{
+ "caption": "Git: Reset (unstage) Current File",
+ "command": "git_reset_head"
+ }
+ ,{
+ "caption": "Git: Reset (unstage) All",
+ "command": "git_reset_head_all"
+ }
+ ,{
+ "caption": "Git: Reset (hard) HEAD",
+ "command": "git_reset_hard_head"
+ }
+ ,{
+ "caption": "Git: Add Selected Hunk",
+ "command": "git_add_selected_hunk"
+ }
+ ,{
+ "caption": "Git: Commit Selected Hunk",
+ "command": "git_commit_selected_hunk"
+ }
+ ,{
+ "caption": "Git: Gui",
+ "command": "git_gui"
+ }
+ ,{
+ "caption": "Git: Gitk",
+ "command": "git_gitk"
+ }
+ ,{
+ "caption": "Git: Commit history",
+ "command": "git_commit_history"
+ }
+]
3  Sublime Text 2/Packages/Git/Git Commit Message.sublime-settings
View
@@ -0,0 +1,3 @@
+{
+ "rulers": [70]
+}
42 Sublime Text 2/Packages/Git/Git.sublime-settings
View
@@ -0,0 +1,42 @@
+{
+ // save before running commands
+ "save_first": true
+
+ // if present, use this command instead of plain "git"
+ // e.g. "/Users/kemayo/bin/git" or "C:\bin\git.exe"
+ ,"git_command": false
+
+ // point this the installation location of git-flow
+ ,"git_flow_command": "/usr/local/bin/git-flow"
+
+ // use the panel for diff output, rather than a new scratch window (new tab)
+ ,"diff_panel": false
+
+ // affects blame command when no selection is made
+ // true: blame whole file
+ // false: blame only current line
+ ,"blame_whole_file": true
+
+ // If you'd rather have your status command open files instead of show you a
+ // diff, set this to true. You can still do `Git: Status` followed by
+ // 'Git: Diff Current File' to get a file diff
+ ,"status_opens_file": false
+
+ // Use --verbose flag for commit messages
+ ,"verbose_commits": true
+
+ // How many commit messages to store in the history. Set to 0 to disable.
+ ,"history_size": 5
+
+ // Show git flow commands
+ ,"flow": false
+
+ // Annotations default to being on for all files. Can be slow in some cases.
+ ,"annotations": false
+
+ // statusbar
+ ,"statusbar_branch": true
+ // Symbols for quick git status in status bar
+ ,"statusbar_status": true
+ ,"statusbar_status_symbols" : {"modified": "", "added": "+", "deleted": "×", "untracked": "?", "conflicts": "", "renamed":"R", "copied":"C", "clean": "", "separator": " "}
+}
125 Sublime Text 2/Packages/Git/Main.sublime-menu
View
@@ -0,0 +1,125 @@
+[
+ {
+ "id": "tools",
+ "children":
+ [
+ {
+ "caption": "Git",
+ "children":
+ [
+ {
+ "caption": "This file",
+ "children":
+ [
+ { "caption": "Log", "command": "git_log" }
+ ,{ "caption": "Graph", "command": "git_graph" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Diff", "command": "git_diff" }
+ ,{ "caption": "DiffTool", "command": "git_diff_tool" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Add", "command": "git_add" }
+ ,{ "caption": "Add Selected Hunk", "command": "git_add_selected_hunk" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Reset", "command": "git_reset_head" }
+ ,{ "caption": "Checkout (Discard Changes)", "command": "git_checkout" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Quick Commit Current File", "command": "git_quick_commit" }
+ ,{ "caption": "Commit Selected Hunk", "command": "git_commit_selected_hunk" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Blame", "command": "git_blame" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Toggle Annotations", "command": "git_toggle_annotations" }
+ ]
+ }
+ ,{
+ "caption": "Whole repo",
+ "children":
+ [
+ { "caption": "Log", "command": "git_log_all" }
+ ,{ "caption": "Graph", "command": "git_graph_all" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Diff", "command": "git_diff_all" }
+ ,{ "caption": "Diff Staged", "command": "git_diff_commit" }
+ ,{ "caption": "Diff Tool", "command": "git_diff_tool_all" }
+ ,{ "caption": "Reset Hard", "command": "git_reset_hard_head" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Add...", "command": "git_add_choice" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Reset", "command": "git_reset_head_all" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Commit", "command": "git_commit" }
+ ,{ "caption": "Amend Last Commit", "command": "git_commit_amend" }
+ ,{ "caption": "-" }
+ ,{ "caption": "Open...", "command": "git_open_file" }
+ ]
+ }
+ ,{
+ "caption": "Stash",
+ "children":
+ [
+ { "caption": "Save", "command": "git_stash" }
+ ,{ "caption": "Pop", "command": "git_stash_pop" }
+ ,{ "caption": "Apply", "command": "git_stash_apply" }
+ ,{ "caption": "Drop", "command": "git_stash_drop" }
+ ]
+ }
+ ,{ "caption": "-" }
+ ,{
+ "caption": "Flow",
+ "children":
+ [
+ { "caption": "Feature Start", "command": "git_flow_feature_start"}
+ ,{ "caption": "Feature Finish", "command": "git_flow_feature_finish"}
+ ,{ "caption": "-"}
+ ,{ "caption": "Release Start", "command": "git_flow_release_start"}
+ ,{ "caption": "Release Finish", "command": "git_flow_release_finish"}
+ ,{ "caption": "-"}
+ ,{ "caption": "Hotfix Start", "command": "git_flow_hotfix_start"}
+ ,{ "caption": "Hotfix Finish", "command": "git_flow_hotfix_finish"}
+ ]
+ }
+ ,{ "caption": "-" }
+ ,{ "caption": "Init", "command": "git_init"}
+ ,{ "caption": "Status...", "command": "git_status" }
+ ,{ "caption": "Branches...", "command": "git_branch" }
+ ,{ "caption": "Merge...", "command": "git_merge" }
+ ,{ "caption": "See commit history...", "command": "git_commit_history"}
+ ]
+ }
+ ]
+ }
+
+ ,{
+ "caption": "Preferences",
+ "mnemonic": "n",
+ "id": "preferences",
+ "children":
+ [
+ {
+ "caption": "Package Settings",
+ "mnemonic": "P",
+ "id": "package-settings",
+ "children":
+ [
+ {
+ "caption": "Git",
+ "children":
+ [
+ {
+ "command": "open_file",
+ "args": {"file": "${packages}/Git/Git.sublime-settings"},
+ "caption": "Settings – Default"
+ },
+ {
+ "command": "open_file",
+ "args": {"file": "${packages}/User/Git.sublime-settings"},
+ "caption": "Settings – User"
+ },
+ { "caption": "-" }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+]
22 Sublime Text 2/Packages/Git/README.markdown
View
@@ -0,0 +1,22 @@
+# Sublime Text 2 plugin: git
+
+Git integration: it's pretty handy. Who knew, right?
+
+For more information about what's supported, and how to install this, [check the wiki](https://github.com/kemayo/sublime-text-2-git/wiki).
+
+## Install
+
+### Package Control
+
+The easiest way to install this is with [Package Control](http://wbond.net/sublime\_packages/package\_control).
+
+ * If you just went and installed Package Control, you probably need to restart Sublime Text 2 before doing this next bit.
+ * Bring up the Command Palette (Command+Shift+p on OS X, Control+Shift+p on Linux/Windows).
+ * Select "Package Control: Install Package" (it'll take a few seconds)
+ * Select Git when the list appears.
+
+Package Control will automatically keep Git up to date with the latest version.
+
+### The rest
+
+If you don't want to use Package Control, [check the wiki](https://github.com/kemayo/sublime-text-2-git/wiki) for other installation methods on various platforms.
115 Sublime Text 2/Packages/Git/add.py
View
@@ -0,0 +1,115 @@
+import os
+import re
+
+import sublime
+from git import GitTextCommand, GitWindowCommand, git_root
+import status
+
+
+class GitAddChoiceCommand(status.GitStatusCommand):
+ def status_filter(self, item):
+ return super(GitAddChoiceCommand, self).status_filter(item) and not item[1].isspace()
+
+ def show_status_list(self):
+ self.results = [[" + All Files", "apart from untracked files"], [" + All Files", "including untracked files"]] + self.results
+ return super(GitAddChoiceCommand, self).show_status_list()
+
+ def panel_followup(self, picked_status, picked_file, picked_index):
+ working_dir = git_root(self.get_working_dir())
+
+ if picked_index == 0:
+ command = ['git', 'add', '--update']
+ elif picked_index == 1:
+ command = ['git', 'add', '--all']
+ else:
+ command = ['git']
+ picked_file = picked_file.strip('"')
+ if os.path.isfile(working_dir + "/" + picked_file):
+ command += ['add']
+ else:
+ command += ['rm']
+ command += ['--', picked_file]
+
+ self.run_command(command, self.rerun,
+ working_dir=working_dir)
+
+ def rerun(self, result):
+ self.run()
+
+
+class GitAdd(GitTextCommand):
+ def run(self, edit):
+ self.run_command(['git', 'add', self.get_file_name()])
+
+
+class GitAddSelectedHunkCommand(GitTextCommand):
+ def run(self, edit):
+ self.run_command(['git', 'diff', '--no-color', '-U1', self.get_file_name()], self.cull_diff)
+
+ def cull_diff(self, result):
+ selection = []
+ for sel in self.view.sel():
+ selection.append({
+ "start": self.view.rowcol(sel.begin())[0] + 1,
+ "end": self.view.rowcol(sel.end())[0] + 1,
+ })
+
+ hunks = [{"diff":""}]
+ i = 0
+ matcher = re.compile('^@@ -([0-9]*)(?:,([0-9]*))? \+([0-9]*)(?:,([0-9]*))? @@')
+ for line in result.splitlines():
+ if line.startswith('@@'):
+ i += 1
+ match = matcher.match(line)
+ start = int(match.group(3))
+ end = match.group(4)
+ if end:
+ end = start + int(end)
+ else:
+ end = start
+ hunks.append({"diff": "", "start": start, "end": end})
+ hunks[i]["diff"] += line + "\n"
+
+ diffs = hunks[0]["diff"]
+ hunks.pop(0)
+ selection_is_hunky = False
+ for hunk in hunks:
+ for sel in selection:
+ if sel["end"] < hunk["start"]:
+ continue
+ if sel["start"] > hunk["end"]:
+ continue
+ diffs += hunk["diff"] # + "\n\nEND OF HUNK\n\n"
+ selection_is_hunky = True
+
+ if selection_is_hunky:
+ self.run_command(['git', 'apply', '--cached'], stdin=diffs)
+ else:
+ sublime.status_message("No selected hunk")
+
+
+# Also, sometimes we want to undo adds
+
+
+class GitResetHead(object):
+ def run(self, edit=None):
+ self.run_command(['git', 'reset', 'HEAD', self.get_file_name()])
+
+ def generic_done(self, result):
+ pass
+
+
+class GitResetHeadCommand(GitResetHead, GitTextCommand):
+ pass
+
+
+class GitResetHeadAllCommand(GitResetHead, GitWindowCommand):
+ pass
+
+
+class GitResetHardHeadCommand(GitWindowCommand):
+ may_change_files = True
+
+ def run(self):
+ if sublime.ok_cancel_dialog("Warning: this will reset your index and revert all files, throwing away all your uncommitted changes with no way to recover. Consider stashing your changes instead if you'd like to set them aside safely.", "Continue"):
+ self.run_command(['git', 'reset', '--hard', 'HEAD'])
130 Sublime Text 2/Packages/Git/annotate.py
View
@@ -0,0 +1,130 @@
+import tempfile
+import re
+import os
+
+import sublime
+import sublime_plugin
+from git import git_root, GitTextCommand
+
+
+class GitClearAnnotationCommand(GitTextCommand):
+ def run(self, view):
+ self.active_view().settings().set('live_git_annotations', False)
+ self.view.erase_regions('git.changes.x')
+ self.view.erase_regions('git.changes.+')
+ self.view.erase_regions('git.changes.-')
+
+
+class GitToggleAnnotationsCommand(GitTextCommand):
+ def run(self, view):
+ if self.active_view().settings().get('live_git_annotations'):
+ self.view.run_command('git_clear_annotation')
+ else:
+ self.view.run_command('git_annotate')
+
+
+class GitAnnotationListener(sublime_plugin.EventListener):
+ def on_modified(self, view):
+ if not view.settings().get('live_git_annotations'):
+ return
+ view.run_command('git_annotate')
+
+ def on_load(self, view):
+ s = sublime.load_settings("Git.sublime-settings")
+ if s.get('annotations'):
+ view.run_command('git_annotate')
+
+
+class GitAnnotateCommand(GitTextCommand):
+ # Unfortunately, git diff does not support text from stdin, making a *live*
+ # annotation difficult. Therefore I had to resort to the system diff
+ # command.
+ # This works as follows:
+ # 1. When the command is run for the first time for this file, a temporary
+ # file with the current state of the HEAD is being pulled from git.
+ # 2. All consecutive runs will pass the current buffer into diffs stdin.
+ # The resulting output is then parsed and regions are set accordingly.
+ def run(self, view):
+ # If the annotations are already running, we dont have to create a new
+ # tmpfile
+ if hasattr(self, "tmp"):
+ self.compare_tmp(None)
+ return
+ self.tmp = tempfile.NamedTemporaryFile()
+ self.active_view().settings().set('live_git_annotations', True)
+ root = git_root(self.get_working_dir())
+ repo_file = os.path.relpath(self.view.file_name(), root)
+ self.run_command(['git', 'show', 'HEAD:{0}'.format(repo_file)], show_status=False, no_save=True, callback=self.compare_tmp, stdout=self.tmp)
+
+ def compare_tmp(self, result, stdout=None):
+ all_text = self.view.substr(sublime.Region(0, self.view.size())).encode("utf-8")
+ self.run_command(['diff', '-u', self.tmp.name, '-'], stdin=all_text, no_save=True, show_status=False, callback=self.parse_diff)
+
+ # This is where the magic happens. At the moment, only one chunk format is supported. While
+ # the unified diff format theoritaclly supports more, I don't think git diff creates them.
+ def parse_diff(self, result, stdin=None):
+ lines = result.splitlines()
+ matcher = re.compile('^@@ -([0-9]*),([0-9]*) \+([0-9]*),([0-9]*) @@')
+ diff = []
+ for line_index in range(0, len(lines)):
+ line = lines[line_index]
+ if not line.startswith('@'):
+ continue
+ match = matcher.match(line)
+ if not match:
+ continue
+ line_before, len_before, line_after, len_after = [int(match.group(x)) for x in [1, 2, 3, 4]]
+ chunk_index = line_index + 1
+ tracked_line_index = line_after - 1
+ deletion = False
+ insertion = False
+ while True:
+ line = lines[chunk_index]
+ if line.startswith('@'):
+ break
+ elif line.startswith('-'):
+ if not line.strip() == '-':
+ deletion = True
+ tracked_line_index -= 1
+ elif line.startswith('+'):
+ if deletion and not line.strip() == '+':
+ diff.append(['x', tracked_line_index])
+ insertion = True
+ elif not deletion:
+ insertion = True
+ diff.append(['+', tracked_line_index])
+ else:
+ if not insertion and deletion:
+ diff.append(['-', tracked_line_index])
+ insertion = deletion = False
+ tracked_line_index += 1
+ chunk_index += 1
+ if chunk_index >= len(lines):
+ break
+
+ self.annotate(diff)
+
+ # Once we got all lines with their specific change types (either x, +, or - for
+ # modified, added, or removed) we can create our regions and do the actual annotation.
+ def annotate(self, diff):
+ self.view.erase_regions('git.changes.x')
+ self.view.erase_regions('git.changes.+')
+ self.view.erase_regions('git.changes.-')
+ typed_diff = {'x': [], '+': [], '-': []}
+ for change_type, line in diff:
+ if change_type == '-':
+ full_region = self.view.full_line(self.view.text_point(line - 1, 0))
+ position = full_region.begin()
+ for i in xrange(full_region.size()):
+ typed_diff[change_type].append(sublime.Region(position + i))
+ else:
+ point = self.view.text_point(line, 0)
+ region = self.view.full_line(point)
+ if change_type == '-':
+ region = sublime.Region(point, point + 5)
+ typed_diff[change_type].append(region)
+
+ for change in ['x', '+']:
+ self.view.add_regions("git.changes.{0}".format(change), typed_diff[change], 'git.changes.{0}'.format(change), 'dot', sublime.HIDDEN)
+
+ self.view.add_regions("git.changes.-", typed_diff['-'], 'git.changes.-', 'dot', sublime.DRAW_EMPTY_AS_OVERWRITE)
168 Sublime Text 2/Packages/Git/commit.py
View
@@ -0,0 +1,168 @@
+import functools
+import tempfile
+import os
+
+import sublime
+import sublime_plugin
+from git import GitTextCommand, GitWindowCommand, plugin_file, view_contents, _make_text_safeish
+import add
+
+history = []
+
+
+class GitQuickCommitCommand(GitTextCommand):
+ def run(self, edit):
+ self.get_window().show_input_panel("Message", "",
+ self.on_input, None, None)
+
+ def on_input(self, message):
+ if message.strip() == "":
+ self.panel("No commit message provided")
+ return
+ self.run_command(['git', 'add', self.get_file_name()],
+ functools.partial(self.add_done, message))
+
+ def add_done(self, message, result):
+ if result.strip():
+ sublime.error_message("Error adding file:\n" + result)
+ return
+ self.run_command(['git', 'commit', '-m', message])
+
+
+# Commit is complicated. It'd be easy if I just wanted to let it run
+# on OSX, and assume that subl was in the $PATH. However... I can't do
+# that. Second choice was to set $GIT_EDITOR to sublime text for the call
+# to commit, and let that Just Work. However, on Windows you can't pass
+# -w to sublime, which means the editor won't wait, and so the commit will fail
+# with an empty message.
+# Thus this flow:
+# 1. `status --porcelain --untracked-files=no` to know whether files need
+# to be committed
+# 2. `status` to get a template commit message (not the exact one git uses; I
+# can't see a way to ask it to output that, which is not quite ideal)
+# 3. Create a scratch buffer containing the template
+# 4. When this buffer is closed, get its contents with an event handler and
+# pass execution back to the original command. (I feel that the way this
+# is done is a total hack. Unfortunately, I cannot see a better way right
+# now.)
+# 5. Strip lines beginning with # from the message, and save in a temporary
+# file
+# 6. `commit -F [tempfile]`
+class GitCommitCommand(GitWindowCommand):
+ active_message = False
+ extra_options = ""
+
+ def run(self):
+ self.lines = []
+ self.working_dir = self.get_working_dir()
+ self.run_command(
+ ['git', 'status', '--untracked-files=no', '--porcelain'],
+ self.porcelain_status_done
+ )
+
+ def porcelain_status_done(self, result):
+ # todo: split out these status-parsing things... asdf
+ has_staged_files = False
+ result_lines = result.rstrip().split('\n')
+ for line in result_lines:
+ if line and not line[0].isspace():
+ has_staged_files = True
+ break
+ if not has_staged_files:
+ self.panel("Nothing to commit")
+ return
+ # Okay, get the template!
+ s = sublime.load_settings("Git.sublime-settings")
+ if s.get("verbose_commits"):
+ self.run_command(['git', 'diff', '--staged', '--no-color'], self.diff_done)
+ else:
+ self.run_command(['git', 'status'], self.diff_done)
+
+ def diff_done(self, result):
+ settings = sublime.load_settings("Git.sublime-settings")
+ historySize = settings.get('history_size')
+
+ def format(line):
+ return '# ' + line.replace("\n", " ")
+
+ if not len(self.lines):
+ self.lines = ["", ""]
+
+ self.lines.extend(map(format, history[:historySize]))
+ self.lines.extend([
+ "# --------------",
+ "# Please enter the commit message for your changes. Everything below",
+ "# this paragraph is ignored, and an empty message aborts the commit.",
+ "# Just close the window to accept your message.",
+ result.strip()
+ ])
+ template = "\n".join(self.lines)
+ msg = self.window.new_file()
+ msg.set_scratch(True)
+ msg.set_name("COMMIT_EDITMSG")
+ self._output_to_view(msg, template, syntax=plugin_file("syntax/Git Commit Message.tmLanguage"))
+ msg.sel().clear()
+ msg.sel().add(sublime.Region(0, 0))
+ GitCommitCommand.active_message = self
+
+ def message_done(self, message):
+ # filter out the comments (git commit doesn't do this automatically)
+ settings = sublime.load_settings("Git.sublime-settings")
+ historySize = settings.get('history_size')
+ lines = [line for line in message.split("\n# --------------")[0].split("\n")
+ if not line.lstrip().startswith('#')]
+ message = '\n'.join(lines).strip()
+
+ if len(message) and historySize:
+ history.insert(0, message)
+ # write the temp file
+ message_file = tempfile.NamedTemporaryFile(delete=False)
+ message_file.write(_make_text_safeish(message, self.fallback_encoding, 'encode'))
+ message_file.close()
+ self.message_file = message_file
+ # and actually commit
+ self.run_command(['git', 'commit', '-F', message_file.name, self.extra_options],
+ self.commit_done, working_dir=self.working_dir)
+
+ def commit_done(self, result):
+ os.remove(self.message_file.name)
+ self.panel(result)
+
+
+class GitCommitAmendCommand(GitCommitCommand):
+ extra_options = "--amend"
+
+ def diff_done(self, result):
+ self.after_show = result
+ self.run_command(['git', 'log', '-n', '1', '--format=format:%B'], self.amend_diff_done)
+
+ def amend_diff_done(self, result):
+ self.lines = result.split("\n")
+ super(GitCommitAmendCommand, self).diff_done(self.after_show)
+
+
+class GitCommitMessageListener(sublime_plugin.EventListener):
+ def on_close(self, view):
+ if view.name() != "COMMIT_EDITMSG":
+ return
+ command = GitCommitCommand.active_message
+ if not command:
+ return
+ message = view_contents(view)
+ command.message_done(message)
+
+
+class GitCommitHistoryCommand(sublime_plugin.TextCommand):
+ def run(self, edit):
+ self.edit = edit
+ self.view.window().show_quick_panel(history, self.panel_done, sublime.MONOSPACE_FONT)
+
+ def panel_done(self, index):
+ if index > -1:
+ self.view.replace(self.edit, self.view.sel()[0], history[index] + '\n')
+
+
+class GitCommitSelectedHunk(add.GitAddSelectedHunkCommand):
+ def run(self, edit):
+ self.run_command(['git', 'diff', '--no-color', self.get_file_name()], self.cull_diff)
+ self.get_window().run_command('git_commit')
62 Sublime Text 2/Packages/Git/diff.py
View
@@ -0,0 +1,62 @@
+import sublime
+from git import GitTextCommand, GitWindowCommand
+
+
+class GitDiff (object):
+ def run(self, edit=None):
+ self.run_command(['git', 'diff', '--no-color', '--', self.get_file_name()],
+ self.diff_done)
+
+ def diff_done(self, result):
+ if not result.strip():
+ self.panel("No output")
+ return
+ s = sublime.load_settings("Git.sublime-settings")
+ if s.get('diff_panel'):
+ view = self.panel(result)
+ else:
+ view = self.scratch(result, title="Git Diff")
+
+ lines_inserted = view.find_all(r'^\+[^+]{2} ')
+ lines_deleted = view.find_all(r'^-[^-]{2} ')
+
+ view.add_regions("inserted", lines_inserted, "markup.inserted.diff", "dot", sublime.HIDDEN)
+ view.add_regions("deleted", lines_deleted, "markup.deleted.diff", "dot", sublime.HIDDEN)
+
+
+class GitDiffCommit (object):
+ def run(self, edit=None):
+ self.run_command(['git', 'diff', '--cached', '--no-color'],
+ self.diff_done)
+
+ def diff_done(self, result):
+ if not result.strip():
+ self.panel("No output")
+ return
+ self.scratch(result, title="Git Diff")
+
+
+class GitDiffCommand(GitDiff, GitTextCommand):
+ pass
+
+
+class GitDiffAllCommand(GitDiff, GitWindowCommand):
+ pass
+
+
+class GitDiffCommitCommand(GitDiffCommit, GitWindowCommand):
+ pass
+
+
+class GitDiffTool(object):
+ def run(self, edit=None):
+ self.run_command(['git', 'difftool', '--', self.get_file_name()])
+
+
+class GitDiffToolCommand(GitDiffTool, GitTextCommand):
+ pass
+
+
+class GitDiffToolAll(GitWindowCommand):
+ def run(self):
+ self.run_command(['git', 'difftool'])
90 Sublime Text 2/Packages/Git/flow.py
View
@@ -0,0 +1,90 @@
+import sublime
+from git import GitWindowCommand
+
+
+class GitFlowCommand(GitWindowCommand):
+ def is_visible(self):
+ s = sublime.load_settings("Git.sublime-settings")
+ if s.get('flow'):
+ return True
+
+
+class GitFlowFeatureStartCommand(GitFlowCommand):
+ def run(self):
+ self.get_window().show_input_panel('Enter Feature Name:', '', self.on_done, None, None)
+
+ def on_done(self, feature_name):
+ self.run_command(['git-flow', 'feature', 'start', feature_name])
+
+
+class GitFlowFeatureFinishCommand(GitFlowCommand):
+ def run(self):
+ self.run_command(['git-flow', 'feature'], self.feature_done)
+
+ def feature_done(self, result):
+ self.results = result.rstrip().split('\n')
+ self.quick_panel(self.results, self.panel_done,
+ sublime.MONOSPACE_FONT)
+
+ def panel_done(self, picked):
+ if 0 > picked < len(self.results):
+ return
+ picked_feature = self.results[picked]
+ if picked_feature.startswith("*"):
+ picked_feature = picked_feature.strip("*")
+ picked_feature = picked_feature.strip()
+ self.run_command(['git-flow', 'feature', 'finish', picked_feature])
+
+
+class GitFlowReleaseStartCommand(GitFlowCommand):
+ def run(self):
+ self.get_window().show_input_panel('Enter Version Number:', '', self.on_done, None, None)
+
+ def on_done(self, release_name):
+ self.run_command(['git-flow', 'release', 'start', release_name])
+
+
+class GitFlowReleaseFinishCommand(GitFlowCommand):
+ def run(self):
+ self.run_command(['git-flow', 'release'], self.release_done)
+
+ def release_done(self, result):
+ self.results = result.rstrip().split('\n')
+ self.quick_panel(self.results, self.panel_done,
+ sublime.MONOSPACE_FONT)
+
+ def panel_done(self, picked):
+ if 0 > picked < len(self.results):
+ return
+ picked_release = self.results[picked]
+ if picked_release.startswith("*"):
+ picked_release = picked_release.strip("*")
+ picked_release = picked_release.strip()
+ self.run_command(['git-flow', 'release', 'finish', picked_release])
+
+
+class GitFlowHotfixStartCommand(GitFlowCommand):
+ def run(self):
+ self.get_window().show_input_panel('Enter hotfix name:', '', self.on_done, None, None)
+
+ def on_done(self, hotfix_name):
+ self.run_command(['git-flow', 'hotfix', 'start', hotfix_name])
+
+
+class GitFlowHotfixFinishCommand(GitFlowCommand):
+ def run(self):
+ self.run_command(['git-flow', 'hotfix'], self.hotfix_done)
+
+ def hotfix_done(self, result):
+ self.results = result.rstrip().split('\n')
+ self.quick_panel(self.results, self.panel_done,
+ sublime.MONOSPACE_FONT)
+
+ def panel_done(self, picked):
+ if 0 > picked < len(self.results):
+ return
+ picked_hotfix = self.results[picked]
+ if picked_hotfix.startswith("*"):
+ picked_hotfix = picked_hotfix.strip("*")
+ picked_hotfix = picked_hotfix.strip()
+ self.run_command(['git-flow', 'hotfix', 'finish', picked_hotfix])
333 Sublime Text 2/Packages/Git/git.py
View
@@ -0,0 +1,333 @@
+import os
+import sublime
+import sublime_plugin
+import threading
+import subprocess
+import functools
+import os.path
+import time
+
+# when sublime loads a plugin it's cd'd into the plugin directory. Thus
+# __file__ is useless for my purposes. What I want is "Packages/Git", but
+# allowing for the possibility that someone has renamed the file.
+# Fun discovery: Sublime on windows still requires posix path separators.
+PLUGIN_DIRECTORY = os.getcwd().replace(os.path.normpath(os.path.join(os.getcwd(), '..', '..')) + os.path.sep, '').replace(os.path.sep, '/')
+
+git_root_cache = {}
+
+
+def main_thread(callback, *args, **kwargs):
+ # sublime.set_timeout gets used to send things onto the main thread
+ # most sublime.[something] calls need to be on the main thread
+ sublime.set_timeout(functools.partial(callback, *args, **kwargs), 0)
+
+
+def open_url(url):
+ sublime.active_window().run_command('open_url', {"url": url})
+
+
+def git_root(directory):
+ global git_root_cache
+
+ retval = False
+ leaf_dir = directory
+
+ if leaf_dir in git_root_cache and git_root_cache[leaf_dir]['expires'] > time.time():
+ return git_root_cache[leaf_dir]['retval']
+
+ while directory:
+ if os.path.exists(os.path.join(directory, '.git')):
+ retval = directory
+ break
+ parent = os.path.realpath(os.path.join(directory, os.path.pardir))
+ if parent == directory:
+ # /.. == /
+ retval = False
+ break
+ directory = parent
+
+ git_root_cache[leaf_dir] = {
+ 'retval': retval,
+ 'expires': time.time() + 5
+ }
+
+ return retval
+
+
+# for readability code
+def git_root_exist(directory):
+ return git_root(directory)
+
+
+def view_contents(view):
+ region = sublime.Region(0, view.size())
+ return view.substr(region)
+
+
+def plugin_file(name):
+ return os.path.join(PLUGIN_DIRECTORY, name)
+
+
+def do_when(conditional, callback, *args, **kwargs):
+ if conditional():
+ return callback(*args, **kwargs)
+ sublime.set_timeout(functools.partial(do_when, conditional, callback, *args, **kwargs), 50)
+
+
+def _make_text_safeish(text, fallback_encoding, method='decode'):
+ # The unicode decode here is because sublime converts to unicode inside
+ # insert in such a way that unknown characters will cause errors, which is
+ # distinctly non-ideal... and there's no way to tell what's coming out of
+ # git in output. So...
+ try:
+ unitext = getattr(text, method)('utf-8')
+ except (UnicodeEncodeError, UnicodeDecodeError):
+ unitext = getattr(text, method)(fallback_encoding)
+ return unitext
+
+
+class CommandThread(threading.Thread):
+ def __init__(self, command, on_done, working_dir="", fallback_encoding="", **kwargs):
+ threading.Thread.__init__(self)
+ self.command = command
+ self.on_done = on_done
+ self.working_dir = working_dir
+ if "stdin" in kwargs:
+ self.stdin = kwargs["stdin"]
+ else:
+ self.stdin = None
+ if "stdout" in kwargs:
+ self.stdout = kwargs["stdout"]
+ else:
+ self.stdout = subprocess.PIPE
+ self.fallback_encoding = fallback_encoding
+ self.kwargs = kwargs
+
+ def run(self):
+ try:
+
+ # Ignore directories that no longer exist
+ if os.path.isdir(self.working_dir):
+
+ # Per http://bugs.python.org/issue8557 shell=True is required to
+ # get $PATH on Windows. Yay portable code.
+ shell = os.name == 'nt'
+ if self.working_dir != "":
+ os.chdir(self.working_dir)
+
+ proc = subprocess.Popen(self.command,
+ stdout=self.stdout, stderr=subprocess.STDOUT,
+ stdin=subprocess.PIPE,
+ shell=shell, universal_newlines=True)
+ output = proc.communicate(self.stdin)[0]
+ if not output:
+ output = ''
+ # if sublime's python gets bumped to 2.7 we can just do:
+ # output = subprocess.check_output(self.command)
+ main_thread(self.on_done,
+ _make_text_safeish(output, self.fallback_encoding), **self.kwargs)
+
+ except subprocess.CalledProcessError, e:
+ main_thread(self.on_done, e.returncode)
+ except OSError, e:
+ if e.errno == 2:
+ main_thread(sublime.error_message, "Git binary could not be found in PATH\n\nConsider using the git_command setting for the Git plugin\n\nPATH is: %s" % os.environ['PATH'])
+ else:
+ raise e
+
+
+# A base for all commands
+class GitCommand(object):
+ may_change_files = False
+
+ def run_command(self, command, callback=None, show_status=True,
+ filter_empty_args=True, no_save=False, **kwargs):
+ if filter_empty_args:
+ command = [arg for arg in command if arg]
+ if 'working_dir' not in kwargs:
+ kwargs['working_dir'] = self.get_working_dir()
+ if 'fallback_encoding' not in kwargs and self.active_view() and self.active_view().settings().get('fallback_encoding'):
+ kwargs['fallback_encoding'] = self.active_view().settings().get('fallback_encoding').rpartition('(')[2].rpartition(')')[0]
+
+ s = sublime.load_settings("Git.sublime-settings")
+ if s.get('save_first') and self.active_view() and self.active_view().is_dirty() and not no_save:
+ self.active_view().run_command('save')
+ if command[0] == 'git' and s.get('git_command'):
+ command[0] = s.get('git_command')
+ if command[0] == 'git-flow' and s.get('git_flow_command'):
+ command[0] = s.get('git_flow_command')
+ if not callback:
+ callback = self.generic_done
+
+ thread = CommandThread(command, callback, **kwargs)
+ thread.start()
+
+ if show_status:
+ message = kwargs.get('status_message', False) or ' '.join(command)
+ sublime.status_message(message)
+
+ def generic_done(self, result):
+ if self.may_change_files and self.active_view() and self.active_view().file_name():
+ if self.active_view().is_dirty():
+ result = "WARNING: Current view is dirty.\n\n"
+ else:
+ # just asking the current file to be re-opened doesn't do anything
+ print "reverting"
+ position = self.active_view().viewport_position()
+ self.active_view().run_command('revert')
+ do_when(lambda: not self.active_view().is_loading(), lambda: self.active_view().set_viewport_position(position, False))
+ # self.active_view().show(position)
+
+ view = self.active_view()
+ if view and view.settings().get('live_git_annotations'):
+ self.view.run_command('git_annotate')
+
+ if not result.strip():
+ return
+ self.panel(result)
+
+ def _output_to_view(self, output_file, output, clear=False,
+ syntax="Packages/Diff/Diff.tmLanguage", **kwargs):
+ output_file.set_syntax_file(syntax)
+ edit = output_file.begin_edit()
+ if clear:
+ region = sublime.Region(0, self.output_view.size())
+ output_file.erase(edit, region)
+ output_file.insert(edit, 0, output)
+ output_file.end_edit(edit)
+
+ def scratch(self, output, title=False, position=None, **kwargs):
+ scratch_file = self.get_window().new_file()
+ if title:
+ scratch_file.set_name(title)
+ scratch_file.set_scratch(True)
+ self._output_to_view(scratch_file, output, **kwargs)
+ scratch_file.set_read_only(True)
+ if position:
+ sublime.set_timeout(lambda: scratch_file.set_viewport_position(position), 0)
+ return scratch_file
+
+ def panel(self, output, **kwargs):
+ if not hasattr(self, 'output_view'):
+ self.output_view = self.get_window().get_output_panel("git")
+ self.output_view.set_read_only(False)
+ self._output_to_view(self.output_view, output, clear=True, **kwargs)
+ self.output_view.set_read_only(True)
+ self.get_window().run_command("show_panel", {"panel": "output.git"})
+
+ def quick_panel(self, *args, **kwargs):
+ self.get_window().show_quick_panel(*args, **kwargs)
+
+
+# A base for all git commands that work with the entire repository
+class GitWindowCommand(GitCommand, sublime_plugin.WindowCommand):
+ def active_view(self):
+ return self.window.active_view()
+
+ def _active_file_name(self):
+ view = self.active_view()
+ if view and view.file_name() and len(view.file_name()) > 0:
+ return view.file_name()
+
+ @property
+ def fallback_encoding(self):
+ if self.active_view() and self.active_view().settings().get('fallback_encoding'):
+ return self.active_view().settings().get('fallback_encoding').rpartition('(')[2].rpartition(')')[0]
+
+ # If there's no active view or the active view is not a file on the
+ # filesystem (e.g. a search results view), we can infer the folder
+ # that the user intends Git commands to run against when there's only
+ # only one.
+ def is_enabled(self):
+ if self._active_file_name() or len(self.window.folders()) == 1:
+ return git_root(self.get_working_dir())
+
+ def get_file_name(self):
+ return ''
+
+ def get_relative_file_name(self):
+ return ''
+
+ # If there is a file in the active view use that file's directory to
+ # search for the Git root. Otherwise, use the only folder that is
+ # open.
+ def get_working_dir(self):
+ file_name = self._active_file_name()
+ if file_name:
+ return os.path.realpath(os.path.dirname(file_name))
+ else:
+ try: # handle case with no open folder
+ return self.window.folders()[0]
+ except IndexError:
+ return ''
+
+ def get_window(self):
+ return self.window
+
+
+# A base for all git commands that work with the file in the active view
+class GitTextCommand(GitCommand, sublime_plugin.TextCommand):
+ def active_view(self):
+ return self.view
+
+ def is_enabled(self):
+ # First, is this actually a file on the file system?
+ if self.view.file_name() and len(self.view.file_name()) > 0:
+ return git_root(self.get_working_dir())
+
+ def get_file_name(self):
+ return os.path.basename(self.view.file_name())
+
+ def get_relative_file_name(self):
+ working_dir = self.get_working_dir()
+ file_path = working_dir.replace(git_root(working_dir), '')[1:]
+ file_name = os.path.join(file_path, self.get_file_name())
+ return file_name.replace('\\', '/') # windows issues
+
+ def get_working_dir(self):
+ return os.path.realpath(os.path.dirname(self.view.file_name()))
+
+ def get_window(self):
+ # Fun discovery: if you switch tabs while a command is working,
+ # self.view.window() is None. (Admittedly this is a consequence
+ # of my deciding to do async command processing... but, hey,
+ # got to live with that now.)
+ # I did try tracking the window used at the start of the command
+ # and using it instead of view.window() later, but that results
+ # panels on a non-visible window, which is especially useless in
+ # the case of the quick panel.
+ # So, this is not necessarily ideal, but it does work.
+ return self.view.window() or sublime.active_window()
+
+
+# A few miscellaneous commands
+