Example #1
0
File: Main.java Project: Hdzi/emacs
  private void commandLoad(Options options) {
    LoadResult result;
    Project project = codeAssist.getProject(options);
    try {
      progressMonitor.attach(project);
      if (options.isFileStdin()) {
        result = codeAssist.load(project, new File("(stdin)"), options.getHereDocReader(inReader));
      } else {
        result = codeAssist.load(project, options.getFile(), options.getEncoding());
      }

      if (options.isPrintAST()) {
        Logger.debug("AST:\n%s", result.getAST());
      }

      if (options.isEmacsFormat()) {
        out.print("(");
        codeAssistError(result, options);
        out.println(")");
      } else {
        codeAssistError(result, options);
      }
    } catch (Exception e) {
      commandException(e, options);
    } finally {
      progressMonitor.detach(project);
    }
  }
Example #2
0
File: Main.java Project: Hdzi/emacs
  private void commandTypeInference(Options options) {
    TypeInferenceResult result;
    Project project = codeAssist.getProject(options);
    try {
      progressMonitor.attach(project);
      if (options.isFileStdin()) {
        result =
            codeAssist.typeInference(
                project,
                new File("(stdin)"),
                options.getHereDocReader(inReader),
                options.getLocation());
      } else {
        result =
            codeAssist.typeInference(
                project, options.getFile(), options.getEncoding(), options.getLocation());
      }

      if (options.isPrintAST()) {
        Logger.debug("AST:\n%s", result.getAST());
      }

      if (options.isTest()) {
        Set<String> data = new HashSet<String>();
        for (IRubyObject klass : result.getTypeSet()) {
          data.add(klass.toString());
        }
        test(options, data);
      } else {
        if (options.isEmacsFormat()) {
          out.print("(");
          out.print("(type");
          for (IRubyObject klass : result.getTypeSet()) {
            out.print(" \"");
            out.print(klass);
            out.print("\"");
          }
          out.println(")");
          codeAssistError(result, options);
          out.println(")");
        } else {
          for (IRubyObject klass : result.getTypeSet()) {
            out.print("type: ");
            out.println(klass);
          }
          codeAssistError(result, options);
        }
      }
    } catch (Exception e) {
      if (options.isTest()) {
        testError(options);
      }
      commandException(e, options);
    } finally {
      progressMonitor.detach(project);
    }
  }
Example #3
0
File: Main.java Project: Hdzi/emacs
  private void commandFindDefinition(Options options) {
    FindDefinitionResult result;
    Project project = codeAssist.getProject(options);
    try {
      progressMonitor.attach(project);
      if (options.isFileStdin()) {
        result =
            codeAssist.findDefinition(
                project,
                new File("(stdin)"),
                options.getHereDocReader(inReader),
                options.getLocation());
      } else {
        result =
            codeAssist.findDefinition(
                project, options.getFile(), options.getEncoding(), options.getLocation());
      }

      if (options.isPrintAST()) {
        Logger.debug("AST:\n%s", result.getAST());
      }

      if (options.isTest()) {
        Set<String> data = new HashSet<String>();
        for (SourceLocation location : result.getLocations()) {
          data.add(location.toString());
        }
        test(options, data);
      } else {
        if (options.isEmacsFormat()) {
          out.print("(");
          out.print("(location");
          for (SourceLocation location : result.getLocations()) {
            if (location.getFile() != null)
              out.printf(" (%s . %d)", emacsStringLiteral(location.getFile()), location.getLine());
          }
          out.println(")");
          codeAssistError(result, options);
          out.println(")");
        } else {
          for (SourceLocation location : result.getLocations()) {
            out.printf("location: %d %s\n", location.getLine(), location.getFile());
          }
          codeAssistError(result, options);
        }
      }
    } catch (Exception e) {
      if (options.isTest()) testError(options);
      commandException(e, options);
    } finally {
      progressMonitor.detach(project);
    }
  }
Example #4
0
File: Main.java Project: Hdzi/emacs
  private void commandWhere(Options options) {
    WhereResult result;
    Project project = codeAssist.getProject(options);
    try {
      progressMonitor.attach(project);
      if (options.isFileStdin()) {
        result =
            codeAssist.where(
                project,
                new File("(stdin)"),
                options.getHereDocReader(inReader),
                options.getLine());
      } else {
        result =
            codeAssist.where(project, options.getFile(), options.getEncoding(), options.getLine());
      }

      if (options.isPrintAST()) {
        Logger.debug("AST:\n%s", result.getAST());
      }

      if (options.isTest()) {
        Set<String> data = new HashSet<String>();
        if (result.getName() != null) data.add(result.getName());
        test(options, data);
      } else {
        if (options.isEmacsFormat()) {
          out.print("(");
          if (result.getName() != null) out.printf("(name . \"%s\")", result.getName());
          codeAssistError(result, options);
          out.println(")");
        } else {
          if (result.getName() != null) {
            out.print("name: ");
            out.println(result.getName());
          }
          codeAssistError(result, options);
        }
      }
    } catch (Exception e) {
      if (options.isTest()) testError(options);
      commandException(e, options);
    } finally {
      progressMonitor.detach(project);
    }
  }
Example #5
0
File: Main.java Project: Hdzi/emacs
 private void command(String command, Options options) {
   long start = System.currentTimeMillis();
   Logger.info("command: %s", command);
   if (options.isTest() && !options.isKeepEnv()) {
     codeAssist.clear();
   }
   if (command.equals("code-completion")) {
     commandCodeCompletion(options);
   } else if (command.equals("type-inference")) {
     commandTypeInference(options);
   } else if (command.equals("find-definition")) {
     commandFindDefinition(options);
   } else if (command.equals("where")) {
     commandWhere(options);
   } else if (command.equals("load")) {
     commandLoad(options);
   } else if (command.equals("script")) {
     script(options);
   } else if (command.equals("clear")) {
     commandClear(options);
   } else if (command.equals("gc")) {
     commandGC(options);
   } else if (command.equals("list-project")) {
     commandListProject(options);
   } else if (command.equals("open-project")) {
     commandOpenProject(options);
   } else if (command.equals("close-project")) {
     commandCloseProject(options);
   } else if (command.equals("environment")) {
     commandEnvironment(options);
   } else if (command.equals("help")) {
     commandHelp(options);
   } else if (command.equals("version")) {
     commandVersion(options);
   } else if (command.length() == 0) {
   } else {
     commandUnknown(command, options);
   }
   if (options.isTime()) {
     Logger.message("%s: %dms", command, (System.currentTimeMillis() - start));
   }
 }
Example #6
0
File: Main.java Project: Hdzi/emacs
  private void commandListProject(Options options) {
    boolean first = true;
    boolean verbose = options.isVerbose();
    if (options.isEmacsFormat()) {
      out.print("(");
    }
    for (Map.Entry<String, Project> entry : codeAssist.getProjects().entrySet()) {
      String name = entry.getKey();
      Project project = entry.getValue();

      if (verbose) {
        if (!first) {
          out.println();
        }
        first = false;

        out.printf("%s:\n", name);
        out.printf("  path: %s\n", project.getPath());
        out.println("  load-path:");
        for (File dir : project.getLoadPath()) {
          out.println("    - " + dir.toString());
        }
        out.println("  gem-path:");
        for (File dir : project.getGemPath()) {
          out.println("    - " + dir.toString());
        }
      } else {
        if (options.isEmacsFormat()) {
          out.print("\"" + name + "\" ");
        } else {
          out.println(name);
        }
      }
    }
    if (options.isEmacsFormat()) {
      out.println(")");
    }
  }
Example #7
0
File: Main.java Project: Hdzi/emacs
 private void commandCloseProject(Options options) {
   for (String name : options.getRestArgs()) {
     codeAssist.closeProject(name);
   }
 }
Example #8
0
File: Main.java Project: Hdzi/emacs
 private void commandOpenProject(Options options) {
   for (String name : options.getRestArgs()) {
     codeAssist.openProject(name, options);
   }
 }
Example #9
0
File: Main.java Project: Hdzi/emacs
 private void commandClear(Options options) {
   codeAssist.clear();
 }
Example #10
0
File: Main.java Project: Hdzi/emacs
  private void commandCodeCompletion(Options options) {
    CodeCompletionResult result;
    Project project = codeAssist.getProject(options);
    try {
      progressMonitor.attach(project);
      if (options.isFileStdin()) {
        result =
            codeAssist.codeCompletion(
                project,
                new File("(stdin)"),
                options.getHereDocReader(inReader),
                options.getLocation());
      } else {
        result =
            codeAssist.codeCompletion(
                project, options.getFile(), options.getEncoding(), options.getLocation());
      }

      if (options.isPrintAST()) {
        Logger.debug("AST:\n%s", result.getAST());
      }

      String prefix = options.getPrefix();
      if (options.isTest()) {
        Set<String> data = new HashSet<String>();
        for (CodeCompletionResult.CompletionCandidate completion : result.getCandidates()) {
          data.add(completion.getCompletion());
        }
        test(options, data);
      } else {
        if (options.isEmacsFormat()) {
          out.print("(");
          out.print("(completion");
          for (CodeCompletionResult.CompletionCandidate completion : result.getCandidates()) {
            if (prefix == null || completion.getCompletion().startsWith(prefix)) {
              out.printf(
                  " (\"%s\" \"%s\" \"%s\" \"%s\")",
                  completion.getCompletion(),
                  completion.getQualifiedName(),
                  completion.getBaseName(),
                  completion.getKind());
            }
          }
          out.println(")");
          codeAssistError(result, options);
          out.println(")");
        } else {
          for (CodeCompletionResult.CompletionCandidate completion : result.getCandidates()) {
            if (prefix == null || completion.getCompletion().startsWith(prefix)) {
              out.printf(
                  "completion: %s %s %s %s\n",
                  completion.getCompletion(),
                  completion.getQualifiedName(),
                  completion.getBaseName(),
                  completion.getKind());
            }
          }
          codeAssistError(result, options);
        }
      }
    } catch (Exception e) {
      if (options.isTest()) {
        testError(options);
      }
      commandException(e, options);
    } finally {
      progressMonitor.detach(project);
    }
  }