Библиотеки для облегчения разработки плагинов Eclipse? - PullRequest
1 голос
/ 22 марта 2012

Я только изучаю разработку плагинов Eclipse, в настоящее время с целью добавления нескольких простых пользовательских команд, которые никто не удосужился реализовать.Я заметил, что API плагинов Eclipse ... оставляет желать лучшего.Существуют ли библиотеки с открытым исходным кодом, которые пытаются улучшить опыт разработки плагинов?(Я начал лениво рассуждать о написании своего собственного ...).

Я знаю, что Eclipse 4.0 должен решить некоторые из этих проблем в долгосрочной перспективе, но я вряд ли смогу перейти кэто на работе в ближайшее время.


Редактировать

Вот пример того, что я имею в виду.Это реализация функции "голодного удаления" для emacs:

(defmacro hungry-delete-backward (&optional limit)
  (if limit
      `(let ((limit (or ,limit (point-min))))
         (while (progn
                  ;; skip-syntax-* doesn't count \n as whitespace..
                  (skip-chars-backward " \t\n\r\f\v" limit)
                  (and (eolp)
                       (eq (char-before) ?\\)
                       (> (point) limit)))
           (backward-char)))
    '(while (progn
              (skip-chars-backward " \t\n\r\f\v")
              (and (eolp)
                   (eq (char-before) ?\\)))
       (backward-char))))

А вот часть эквивалентной реализации для Eclipse, не включая файл манифеста, plugin.xml илиАктиватор для плагина:

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
  IEditorPart editor = HandlerUtil.getActiveEditorChecked(event);
  if (!(editor instanceof ITextEditor)) return null;
  ITextEditor ite = (ITextEditor) editor;
  IDocumentProvider idp = ite.getDocumentProvider();
  IDocument doc = idp.getDocument(ite.getEditorInput());
  ISelection selection = ite.getSelectionProvider().getSelection();
  if (!(editor instanceof ITextSelection)) return null;
  ITextSelection its = (ITextSelection) selection;
  int currentCursorPosition = its.getOffset();
  int deletionStart, deletionEnd;
  if (its.getLength() == 0) {
    deletionStart = currentCursorPosition - 1;
    deletionEnd = currentCursorPosition;
    FindReplaceDocumentAdapter frda = new FindReplaceDocumentAdapter(doc);
    while (Character.isWhitespace(frda.charAt(deletionStart)) && deletionStart > 0) {
      deletionStart--;
   }
   if (deletionStart != 0 && deletionStart + 1 != deletionEnd) deletionStart++;
  } else {
    deletionStart = its.getOffset();
    deletionEnd = its.getOffset() + its.getLength();
  }

  int deletionLength = deletionEnd - deletionStart;
  try {
    doc.replace(deletionStart, deletionLength, "");
  } catch (BadLocationException ble) {
    // Bad location, just ignore it.
  }
  return null;
}

Кусок шаблона в верхней части версии Java, например, может быть легко заменен библиотекой.

1 Ответ

0 голосов
/ 22 марта 2012

Я думаю, вы ищете что-то вроде Groovy-Monkey или Eclipse-Monkey , которые позволят вам создавать сценарии для подключения к Eclipse.Я не знаю много ни о каком проекте, ни знаю, активно ли они поддерживаются (на самом деле я знаю , что Eclipse-Monkey больше не поддерживается).Но они позволяют вам создавать Emacs-подобные сценарии внутри Eclipse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...