Как обойти Eclipse, глотая двойные кавычки для $ {selected_text} - PullRequest
2 голосов
/ 29 декабря 2010

Я использую Eclipse 3.6.1 Build id: M20100909-0800 и Aptana Studio 2.0.5, который основан на Eclipse 3.5.2 (оба на OS X), и в обеих программах функция внешних инструментов, кажется, глотает двойные кавычки и пробел для переменной ${selected_text}.

Не является ли переменная ${selected_text} по существу бесполезной с упомянутым поведением?Есть ли способ обойти это или где-то скрытый параметр?

Спасибо за чтение.

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Это легко можно считать функцией безопасности / безопасности.

Я предлагаю "${selected_text}".

... но если он съедает ВСЕ пробелы, это действительно не поможет. Да. Может быть, это достаточно умно, чтобы обнаружить кавычки и сохранить пробелы ... но, вероятно, нет.


Хорошо, я немного поковырялся. Кавычки в самом списке аргументов сохраняются согласно моему первоначальному предложению выше. Я нашел следующий автоматически сгенерированный список аргументов, который работал Just Fine:

-os $ {target.os} -ws $ {target.ws} -arch $ {target.arch} -nl $ {target.nl} -consoleLog -debug "$ {workspace_loc: /com.cardiff.bpm.ide.webforms.ui/debug.options}"

Но если ваш выбор текста содержит кавычки, я ожидаю, что он будет обрабатываться в соответствии с базовой ОС. Windows "cmd" делает некоторые ... творческие вещи с ними, например. Мой * nix-fu не могучий, поэтому я не могу сказать вам, что OS X будет делать под прикрытием, но я подозреваю, что именно здесь вы найдете свое решение.

Возможно, вам придется сделать что-то глупое, например, URL-кодирование вашего выбора, и использовать какой-либо инструмент командной строки, чтобы де-кодировать его перед передачей его нужному внешнему инструменту, как только текст выйдет из сцеплений Eclipse.

(очень) быстрый просмотр моего 3.6.1 пользовательского интерфейса не включился, чтобы сделать это автоматически, но, вероятно, где-то есть плагин, который добавит эту функцию в контекст редактора (щелчок правой кнопкой мыши) меню.

Я бы ожидал, что редактор HTML уже имеет такую ​​возможность ... но я не вижу ничего, кроме "режима умной вставки", который звучит многообещающе, и я также не вижу, чтобы это работало.


Это дует козам, от всей души, угу на несколько недель подряд. До тех пор, пока у вас не появится сыпь, самая неприятная как по тяжести, так и по местности. Истинно.

Я не думаю, что вы получаете мое предлагаемое решение:

  1. Настройте ваш инструмент так, чтобы он де-url-encode-ificate входящую строку использовал какой-то предложенный инструмент командной строки.
  2. В вашем редакторе (в eclipse) закодируйте URL-адрес текста, который вы хотите выделить, и передайте в инструмент. Вручную.
  3. Запустите инструмент для выбранного (закодированного в URL) текста.
  4. Вернуть выбранный текст. Также вручную. Вероятно, просто "отменить".

«1» - вот почему я искал какой-либо способ пользовательского интерфейса затмения для URL-кодирования выделения. Редактор HTML даже не сделает этого, когда вы вставите в строку атрибута. Sheesh.

Два других варианта:

  1. Исправьте ошибку самостоятельно. Открытый исходный код и все такое.
  2. Напишите плагин, который предоставляет свою собственную версию $ {selected_text}, которая не удаляет все строки.
  3. Эй! SED! Замените кавычки каким-то случайным (неиспользуемым в любом выбранном вами выделении) символом с высоким значением ascii и перенесите его обратно в двойную кавычку вместо предложенного de-url-encode-ificationizer. Вам все равно придется вручную редактировать / отменять текст, но, по крайней мере, вам не нужно будет "" "На самом деле поиск / замена по данному выделению делает это менее болезненным, чем можно подумать.

Я не уверен, что такое # 2, но я бы представил, если у вас нет опыта работы с плагином Eclipse, мысль может быть довольно пугающей. Может даже быть пример плагина, который предоставляет такую ​​переменную, хотя я не проверял.


Не думаю, что мы общаемся.

Вы не выделяете текст с кавычками. Вы выбираете искаженный текст, а sed превращает его обратно в кавычки для вас.

Например, у вас есть строка print("hello world"); в вашем редакторе, и вы хотите отправить ее своему инструменту.

  1. измените его на print(~hello world~); в вашем редакторе. Вручную или с помощью сценария или чего-либо еще.
  2. выберите его
  3. запустите ваш инструмент, возможно, обернутый в скрипт, который вернет ~ s обратно к " s.
  4. изменить его обратно на print("hello world");.

Это ручной процесс. Это не красиво. Обходные пути ошибок такие. Вы можете, вероятно, придумать скрипт обезьяны, чтобы конвертировать кавычки в Something Else, и «отменить» легко. Возможно, вы даже сможете прикрепить ваш скрипт к сочетанию клавиш ... не знаю. И ~ - паршивый выбор для заменяющего персонажа, это только первое, о чем я мог подумать, это было достаточно редко, чтобы быть достойным примером.

Мы уже общаемся?

0 голосов
/ 31 декабря 2010

Для протокола, я собрал патч, используя руководство от джентльмена в комментариях к ошибке.

Я не знаю, будет ли он принят, но это исправляет ситуацию для меня, так что, возможно, кто-то ещеможет оказаться полезным.
Опять же, это только для Mac OS X Eclipse.

  1. Запустите Eclipse.
  2. Перейдите на Import > Plug-ins and Fragments.

    Импорт из: Active Platform
    Фрагменты для импорта: выбор из всех плагинов
    Импорт как: проекты из репозитория

    Next >

  3. Pick org.eclipse.debug.ui и org.eclipse.debug.core

  4. Как только проекты окажутся в вашей рабочей области, примените два патча, составляющих предложенный патч v1, которые можно найти на странице отслеживания ошибок ошибка 255619

  5. Перейдите на Export > Deployable plug-ins and fragments и сделайте банку из ваших измененных пакетов.

Надеюсь, это поможет.

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