diff --git a/Default (Linux).sublime-keymap b/Default (Linux).sublime-keymap new file mode 100644 index 0000000..07faca2 --- /dev/null +++ b/Default (Linux).sublime-keymap @@ -0,0 +1,8 @@ +[ + { + "keys": [ + "ctrl+alt+h" + ], + "command": "stylishhaskell" + } +] \ No newline at end of file diff --git a/Default (OSX).sublime-keymap b/Default (OSX).sublime-keymap new file mode 100644 index 0000000..adca49d --- /dev/null +++ b/Default (OSX).sublime-keymap @@ -0,0 +1,8 @@ +[ + { + "keys": [ + "super+ctrl+h" + ], + "command": "stylishhaskell" + } +] \ No newline at end of file diff --git a/Default (Windows).sublime-keymap b/Default (Windows).sublime-keymap new file mode 100644 index 0000000..07faca2 --- /dev/null +++ b/Default (Windows).sublime-keymap @@ -0,0 +1,8 @@ +[ + { + "keys": [ + "ctrl+alt+h" + ], + "command": "stylishhaskell" + } +] \ No newline at end of file diff --git a/Default.sublime-commands b/Default.sublime-commands new file mode 100644 index 0000000..4e173b5 --- /dev/null +++ b/Default.sublime-commands @@ -0,0 +1,6 @@ +[ + { + "caption": "StylishHaskell: Reformat haskell", + "command": "stylishhaskell" + } +] \ No newline at end of file diff --git a/Main.sublime-menu b/Main.sublime-menu new file mode 100644 index 0000000..156b4fa --- /dev/null +++ b/Main.sublime-menu @@ -0,0 +1,38 @@ +[ + { + "mnemonic": "n", + "caption": "Preferences", + "id": "preferences", + "children": [ + { + "mnemonic": "P", + "caption": "Package Settings", + "id": "package-settings", + "children": [ + { + "caption": "StylishHaskell", + "children": [ + { + "caption": "Settings – Default", + "args": { + "file": "${packages}/StylishHaskell/StylishHaskell.sublime-settings" + }, + "command": "open_file" + }, + { + "caption": "Settings – User", + "args": { + "file": "${packages}/User/StylishHaskell.sublime-settings" + }, + "command": "open_file" + }, + { + "caption": "-" + } + ] + } + ] + } + ] + } +] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/StylishHaskell.py b/StylishHaskell.py new file mode 100644 index 0000000..e7bd765 --- /dev/null +++ b/StylishHaskell.py @@ -0,0 +1,59 @@ +import sublime +import sublime_plugin +import subprocess +import errno +import os +import tempfile + + +s = sublime.load_settings("StylishHaskell.sublime-settings") +paths = s.get('add_to_PATH') + +if not any(paths): + try: + sublHask = sublime.load_settings("SublimeHaskell.sublime-settings") + paths = sublHask.get("add_to_PATH") + except: + pass + +path = ':'.join(paths) + + +class StylishhaskellCommand(sublime_plugin.TextCommand): + def run(self, edit): + regions = [] + for region in self.view.sel(): + # If no selection, use the entire file as the selection + regions.append(sublime.Region(region.a, region.b)) + if region.empty() and s.get("use_entire_file_if_no_selection"): + selection = sublime.Region(0, self.view.size()) + else: + selection = region + try: + result = self.callStylish(self.view.substr(selection)) + if result: + self.view.replace(edit, selection, result) + except Exception as e: + sublime.status_message(str(e)) + self.view.sel().clear() + for region in regions: + + self.view.sel().add(region) + + def callStylish(self, string): + try: + env = os.environ + env["PATH"] = (path + ":" if path else "") + os.environ['PATH'] + tfile = tempfile.NamedTemporaryFile(delete=False) + tfile.write(string) + tfile.close() + p2 = subprocess.Popen("stylish-haskell " + tfile.name, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env, shell=True) + result = p2.communicate()[0] + os.unlink(tfile.name) + return result + except OSError as e: + if e.errno == errno.ENOENT: + sublime.error_message("StylishHaskell: stylish-haskell executable was not found!\n" + + "Try adjusting the 'add_to_PATH' setting.\n") + except Exception as e: + sublime.error_message("error " + str(e)) diff --git a/StylishHaskell.pyc b/StylishHaskell.pyc new file mode 100644 index 0000000..907d97b Binary files /dev/null and b/StylishHaskell.pyc differ diff --git a/StylishHaskell.sublime-settings b/StylishHaskell.sublime-settings new file mode 100644 index 0000000..e7c21f3 --- /dev/null +++ b/StylishHaskell.sublime-settings @@ -0,0 +1,4 @@ +{ + "use_entire_file_if_no_selection" : true, + "add_to_PATH": [] +} \ No newline at end of file diff --git a/package-metadata.json b/package-metadata.json new file mode 100644 index 0000000..c918a93 --- /dev/null +++ b/package-metadata.json @@ -0,0 +1 @@ +{"url": "https://github.com/hairyhum/SublimeStylishHaskell", "version": "2012.08.22.10.31", "description": "plugin for sublime text 2 editor to stylish-haskell util"} \ No newline at end of file