Генерация геттеров и сеттеров с помощью UltiSnip в Vim
Я хочу создать код UltiSnip, похожий на тот, который используется в их Github README.
Я понимаю, что это включает в себя интерполяцию Python, и мне трудно написать свою собственную интерпретацию. Их документация дает хороший список того, что может сделать UltiSnip, но все еще трудно понять, что я пытаюсь сделать.
Я хочу автоматически генерировать публичные методы для получения и установки переменных экземпляра, например, я набираю в этом...
class Foo()
{
int x;
double y;
...
и UltiSnip должен добавить эту часть...
public void setX(int _x)
{
this.x = _x;
}
public int getX()
{
return this.x;
}
public void setY(double _y)
{
this.y = _y;
}
public double getY()
{
return this.y;
}
}
4 ответа
Используйте eclim для этого. Просто выберите атрибуты в визуальном режиме, а затем:JavaGetSet:)
Это не то, о чем UltiSnips (и другие плагины сниппетов). Вы действительно можете легко написать setter
а также getter
фрагменты, которые расширяются до соответствующей функции с заполнителями для имени и типа атрибута. Но определение всех методов получения и установки для класса только из того, что определено в настоящее время, слишком сильно расширяет эту функциональность; вам понадобится (элементарный) синтаксический анализатор языка, и вы можете захотеть реализовать добавление атрибутов / изменение типа атрибута или имени.
Я знаю, что большинство IDE предоставляют такие функциональные возможности "из коробки", но они являются инструментами специального назначения для очень ограниченного набора языков программирования, а не текстовым редактором общего назначения, таким как Vim. Если вы действительно любите эту функциональность, просто используйте IDE по вашему выбору в сочетании с редактированием того же файла исходного кода с помощью Vim. Или используйте упомянутые более простые фрагменты и примите немного больше печатания с вашей стороны.
Привет, у меня есть проблемы с размещением здесь кода с символом `тогда я использовал github: github.com/robertbnd/notes/blob/master/stack
только вам нужно написать "int x" и нажать клавишу, которую вы выбрали в своих фрагментах. Мой случай: let g:UltiSnipsExpandTrigger="`"вы можете персонализировать его
lh-refactor предоставляет методы рефакторинга сгенерировать getter/setter для Java и некоторых других языков.
Соглашения об именах могут быть настроены независимо от внутренних фрагментов.