public void reset() {
    // if (area.getSelectionStart() != wordOffset + wordPos)
    // area.setCaretPosition(wordOffset + wordPos);
    // String w = area.getText(wordOffset,wordPos);
    String w = area.code.getsb(row).toString().substring(wordStart, wordEnd);
    if (w.isEmpty()) {
      options = completions;
    } else if ((options != null) && (word != null) && (w.startsWith(word))) {
      ArrayList<Completion> l = new ArrayList<Completion>();
      for (Completion c : options) {
        if (c.match(w)) {
          l.add(c);
        }
      }
      options = l.toArray(new Completion[l.size()]);
    } else {
      ArrayList<Completion> l = new ArrayList<Completion>();
      for (Completion c : completions) {
        if (c.match(w)) {
          l.add(c);
        }
      }
      options = l.toArray(new Completion[l.size()]);
    }
    if (options.length <= 0) {
      dispose();
      return;
    }
    word = w;
    completionList.setListData(options);
    completionList.setVisibleRowCount(Math.min(options.length, 8));
    // pack();
    setLocation();
    select(0);

    show();
    // requestFocus();
    completionList.requestFocusInWindow();
  }