Example #1
0
File: xreq.py Project: sogilis/XReq
def go_to_spec(prj = XReqProject()):
  context = GPS.current_context()
  file    = context.file()
  line_no = context.location().line()
  buffer  = GPS.EditorBuffer.get(file)
  #GPS.Console().write ("%s line %d\n" % (file.name(), line_no))
  if not buffer.is_modified():
    filename = file.name()
    delete   = False
  else:
    filename = GPS.dump(buffer.get_chars())
    delete   = True
  args = ["xreq", "--partial", "--step-matching", "--step", prj.steps_dir(), filename]
  p = subprocess.Popen(args, stdout=subprocess.PIPE)
  step_file = None
  step_line = None
  for line in p.stdout.readlines():
    m = re.match('^Step Matching: "(.*):([0-9]+)" matches "(.*):([0-9]+)" procedure (.*)$', line)
    if m:
      l = int(m.group(2))
      if l > line_no:
        break
      else:
        #GPS.Console().write ("line %d match %s (%s:%d)\n" % (
        #  int(m.group(2)), m.group(5), m.group(3), int(m.group(4))));
        step_file = m.group(3)
        step_line = int(m.group(4))
  p.stdout.close()
  if delete:
    os.remove(filename)
  if step_file:
    open_file(step_file, step_line)