Цвет "отметки вхождений" в вертикальной полосе в Netbeans - PullRequest
4 голосов
/ 02 июня 2011

Когда вы выбираете переменную в NetBeans 7, работая с PHP (работает и с другими языками), программа выделяет все места внутри файла, где используется та же переменная.

Я знаю, как изменитьцвет самого выделенного текста (в Options->Fonts & Colors->Syntax->PHP->Mark Occurrences), но NetBeans также помечает совпадения в вертикальной полосе справа от полосы прокрутки редактора.Это цвет, который я хочу изменить, потому что эта полоса также помечает различия при использовании контроля версий, и совпадения "mark occurrences" не очень ясны при большом количестве различий.

1 Ответ

4 голосов
/ 03 апреля 2014

Сначала я получил коды цветов RGB, которые мне нужно было найти, 175, 172, 102 (html # AFAC66)

Очевидно, что цвет, используемый для выделения вхождений в вертикальной полосе, жестко задан в источниках Netbeans, поэтому изменить его параметры или любой файл конфигурации невозможно.

Вот как выглядит вертикальная полоса по умолчанию при маркировке вхождений:
enter image description here

Модуль PHP получает цвет выделения из класса:
org.netbeans.modules.csl.editor.semantic.MarkOccurrencesHighlighter.java
Упомянутый класс находится в модуле / банке:
$installation_folder/netbeans-8.0/ide/modules/org-netbeans-modules-csl-api.jar

Вы просматриваете источник этого класса в http://hg.netbeans.org/, или можете использовать декомпилятор.

Чтобы изменить цвет, вы можете получить исходный код и перекомпилировать модуль, или вы можете просто изменить байт-код. Лично, поскольку я хотел изменить только 3 значения (RGB), я решил изменить байт-код. Для этого вы можете выполнить следующие шаги:

  1. Сделайте копию org-netbeans-modules-csl-api.jar в другой папке (я буду называть эту папку $folder).
  2. Извлечение класса org.netbeans.modules.csl.editor.semantic.MarkOccurrencesHighlighter.class из org-netbeans-modules-csl-api.jar. Для простоты убедитесь, что вы извлекаете иерархию пакетов / папок в той же папке ($folder), в которой находится копия файла jar, так что вы получите:
    $folder/org/netbeans/modules/csl/editor/semantic/MarkOccurrencesHighlighter.class
    $folder/org-netbeans-modules-csl-api.jar
  3. Откройте класс в декомпиляторе, я использовал JD (http://jd.benow.ca/)
  4. Найдите код, который вы хотите изменить (ES_COLOR): enter image description here
  5. Откройте класс в редакторе байт-кода, я использовал reJ (http://rejava.sourceforge.net/) и найдите значения 175, 172, 102. (Вам придется изменить код операции bipush на sipush, если вы хочу использовать значение больше 127) enter image description here
  6. Измените значения, я выбрал синий (0,0,255): enter image description here
  7. Сохраните измененный .class и проверьте с помощью декомпилятора, что значения были изменены: enter image description here
  8. В терминале или командной строке перейдите к $folder и выполните следующую команду, чтобы заменить измененный класс в jar:
    jar -uf org-netbeans-modules-csl-api.jar org/netbeans/modules/csl/editor/semantic/MarkOccurrencesHighlighter.class
  9. Теперь вы можете использовать декомпилятор, чтобы убедиться, что файл jar действительно был изменен с помощью измененного .class
  10. Наконец, вы можете скопировать измененный jar / модуль в исходное местоположение $installation_folder/netbeans-8.0/ide/modules/ или скопировать его в папку $user_directory/modules. Последнее кажется лучше, поскольку оно не изменяет установку.
  11. Запустите Netbeans и наслаждайтесь новым цветом.

Вот как теперь выглядит вертикальная черта при маркировке вхождений:
enter image description here

Если вы хотите изменить цвет, используемый для выделения вхождений на вертикальной панели для модуля Java, вам придется изменить другой класс org.netbeans.modules.java.editor.semantic.MarkOccurrencesHighlighter.java, расположенный внутри $installation_folder/netbeans-8.0/java/modules/org-netbeans-modules-java-editor.jar, следуя тем же шагам.

Если я что-то пропустил или если есть более простой способ изменить цвета, показанные на вертикальной панели, не стесняйтесь добавлять это.

(протестировано с Netbeans 8.0)

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