Skip to content

Commit

Permalink
.DS_Store added to gitignore and first crack at syntax and semantic e…
Browse files Browse the repository at this point in the history
…rrors
  • Loading branch information
jchannon committed Sep 13, 2014
1 parent b82e14c commit 5249c3e
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1 +1,2 @@
*.sublime-workspace
*.DS_Store
8 changes: 7 additions & 1 deletion lib/omnisharp.py
Expand Up @@ -8,7 +8,8 @@
import socket
import subprocess
import queue

import traceback
import sys

from .helpers import get_settings
from .helpers import current_solution
Expand Down Expand Up @@ -36,6 +37,7 @@ def run(self):
self.url, self.data, self.timeout)
self.callback(response.read())
except:
traceback.print_exc(file=sys.stdout)
self.callback(None)


Expand Down Expand Up @@ -80,11 +82,15 @@ def urlopen_callback(data):
print('======== response ========')
if data is None:
print(None)
# traceback.print_stack(file=sys.stdout)
print('callback none')
callback(None)
else:
jsonStr = data.decode('utf-8')
print(jsonStr)
jsonObj = json.loads(jsonStr)
# traceback.print_stack(file=sys.stdout)
print('callback data')
callback(jsonObj)
urlopen_async(
target,
Expand Down
4 changes: 3 additions & 1 deletion listeners/__init__.py
@@ -1,7 +1,9 @@
from .completion import OmniSharpCompletionEventListener
from .server_runner import OmniSharpServerRunnerEventListener
from .syntax import OmniSharpSyntaxEventListener

__all__ = [
'OmniSharpCompletionEventListener',
'OmniSharpServerRunnerEventListener'
'OmniSharpServerRunnerEventListener',
'OmniSharpSyntaxEventListener'
]
86 changes: 86 additions & 0 deletions listeners/syntax.py
@@ -0,0 +1,86 @@
import sublime
import sublime_plugin

from ..lib import helpers
from ..lib import omnisharp


class OmniSharpSyntaxEventListener(sublime_plugin.EventListener):
data = None
view = None

def on_modified(self, view):
if not helpers.is_csharp(view):
return

self.view = view

omnisharp.get_response(view, '/syntaxerrors', self._handle_syntaxerrors)
omnisharp.get_response(view, '/semanticerrors', self._handle_semanticerrors)
# if self.data is None:
# omnisharp.get_response(view, '/syntaxerrors', self._handle_syntaxerrors)
# else:
# self._show_errors()

print('file changed')


def _handle_semanticerrors(self, data):
print('handling semantic Errors')
if data is None:
return
self.view.erase_regions("semanticoops")
self.quickitems = []
self.data = data
self.underlines = []
if "Errors" in self.data and self.data["Errors"] != None:# and len(self.data["Errors"]) > 0:
for i in self.data["Errors"]:
# reg = sublime.Region(i["Column"], i["Column"])
point = self.view.text_point(i["Line"]-1, i["Column"])
reg = self.view.word(point)
self.underlines.append(reg)
self.quickitems.append(i["Message"].strip() + " - (" + str(i["Line"]) + ", " + str(i["Column"]) + ")")
if len(self.quickitems) > 0:
# pt = self.view.window().get_output_panel("paneltest")
# pt.set_read_only(False)
# edit = pt.begin_edit()
# pt.insert(edit, pt.size(), "Writing...")
# pt.end_edit(edit)
# self.view.window().run_command("show_panel", {"panel": "output.paneltest"})
# self.view.window().show_quick_panel(self.quickitems, None)#self.on_done)
self.view.add_regions("semanticoops", self.underlines, "illegal", "", sublime.DRAW_NO_FILL+sublime.DRAW_NO_OUTLINE+sublime.DRAW_SQUIGGLY_UNDERLINE)

self.data = None

def _handle_syntaxerrors(self, data):
print('handling Errors')
if data is None:
return
self.view.erase_regions("oops")
self.quickitems = []
self.data = data
self.underlines = []
if "Errors" in self.data and self.data["Errors"] != None:# and len(self.data["Errors"]) > 0:
for i in self.data["Errors"]:
# reg = sublime.Region(i["Column"], i["Column"])
point = self.view.text_point(i["Line"]-1, i["Column"])
reg = self.view.word(point)
self.underlines.append(reg)
self.quickitems.append(i["Message"].strip() + " - (" + str(i["Line"]) + ", " + str(i["Column"]) + ")")
if len(self.quickitems) > 0:
# pt = self.view.window().get_output_panel("paneltest")
# pt.set_read_only(False)
# edit = pt.begin_edit()
# pt.insert(edit, pt.size(), "Writing...")
# pt.end_edit(edit)
# self.view.window().run_command("show_panel", {"panel": "output.paneltest"})
# self.view.window().show_quick_panel(self.quickitems, None)#self.on_done)
self.view.add_regions("oops", self.underlines, "illegal", "", sublime.DRAW_NO_FILL+sublime.DRAW_NO_OUTLINE+sublime.DRAW_SQUIGGLY_UNDERLINE)

self.data = None

def on_done(self, index):
print('this wont fix it')



0 comments on commit 5249c3e

Please sign in to comment.