import sublime
import sublime_plugin

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


class OmniSharpGoToDefinition(sublime_plugin.TextCommand):
    def run(self, text):
        omnisharp.get_response(
            self.view, '/gotodefinition', self._handle_gotodefinition)

    def _handle_gotodefinition(self, data):
        if data is None or data['FileName'] is None:
            return

        filename = data['FileName']
        line = data['Line']
        column = data['Column']

        sublime.active_window().open_file(
            '{}:{}:{}'.format(filename, line or 0, column or 0),
            sublime.ENCODED_POSITION)

    def is_enabled(self):
        return helpers.is_csharp(self.view)