Возвышенный текст 3 Получить и установить фрагмент Java
Я пытаюсь создать фрагменты для автоматического создания геттеров и сеттеров в Java
Проблема в том, что я не знаю, как разделить строку, взятую из $TM_SELECTED_TEXT
Код должен быть вставлен ниже конструктора
После того, как я выделю текст, это выглядит как это имя строки
Вот код, я пропускаю разделенную строку и вставку кода в конструктор, потому что я понятия не имею, как это сделать
<snippet>
<content><![CDATA[
public void set$TM_SELECTED_TEXT($TM_SELECTED_TEXT $TM_SELECTED_TEXT) {
this.$TM_SELECTED_TEXT = $TM_SELECTED_TEXT;
}
public $TM_SELECTED_TEXT get$TM_SELECTED_TEXT {
return this.$TM_SELECTED_TEXT;
}
]]></content>
<tabTrigger>getter_setter</tabTrigger>
<scope>source.java</scope>
</snippet>
Я также хотел бы знать, как изменить первую букву переменной на верхний регистр, чтобы она выглядела как getName и setName вместо setname и getname*
1 ответ
Вы можете разделить строку во фрагменте, используя регулярное выражение. Но я советую создать плагин вместо сниппета. Вы можете использовать функцию python split () в sublime plugin и capitalize(), чтобы изменить первую букву имени переменной в верхний регистр.
Для доступа к выделению в плагине используйте эту конструкцию:
self.view.sel()[0]
чтобы вставить код получения или использования кода:
self.view.replace(edit, region, content)
или же:
self.view.insert(edit, position, content)
Этот код работает для меня:
import sublime, sublime_plugin
class javamagicCommand(sublime_plugin.TextCommand):
def run(self, edit):
snippet_code = ''' public void set$TM_SELECTED_PART1($TM_SELECTED_PART1 $TM_SELECTED_PART2) {
this.$TM_SELECTED_PART1 = $TM_SELECTED_PART1;
}'''
new_content = ''
for selection in self.view.sel():
selection_content = self.view.substr(selection)
if selection_content.find('.') > 0:
parts = selection_content.split('.')
new_content = snippet_code.replace('$TM_SELECTED_PART1', parts[0])
new_content = new_content.replace('$TM_SELECTED_PART2', parts[1])
self.view.insert(edit, selection.begin(), new_content)
else:
sublime.status_message('wrong selection') # statusline message
# sublime.message_dialog('wrong selection') # popup message
for selection in self.view.sel():
self.view.erase(edit, selection)
#print('done') # debug output to console