mirror of
https://github.com/godotengine/godot.git
synced 2025-10-24 10:23:28 +00:00
New Code Completion
-=-=-=-=-=-=-=-=-=- -Massive improvement to code completion -Argument hinting for functions If you manage to out-smart the code-completion in a situation where completion should be possible to guess, let me know. Please enter the commit message for your changes. Lines starting
This commit is contained in:
parent
be4e40e90a
commit
bcf27feb98
30 changed files with 2245 additions and 929 deletions
|
|
@ -384,9 +384,35 @@ void ScriptTextEditor::_validate_script() {
|
|||
_update_name();
|
||||
}
|
||||
|
||||
void ScriptTextEditor::_code_complete_script(const String& p_code, const String& p_keyword,int p_line, List<String>* r_options) {
|
||||
|
||||
Error err = script->get_language()->complete_keyword(p_code,p_line,script->get_path().get_base_dir(),p_keyword,r_options);
|
||||
static Node* _find_node_for_script(Node* p_base, Node*p_current, const Ref<Script>& p_script) {
|
||||
|
||||
if (p_current->get_owner()!=p_base && p_base!=p_current)
|
||||
return NULL;
|
||||
Ref<Script> c = p_current->get_script();
|
||||
if (c==p_script)
|
||||
return p_current;
|
||||
for(int i=0;i<p_current->get_child_count();i++) {
|
||||
Node *found = _find_node_for_script(p_base,p_current->get_child(i),p_script);
|
||||
if (found)
|
||||
return found;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ScriptTextEditor::_code_complete_script(const String& p_code, List<String>* r_options) {
|
||||
|
||||
Node *base = get_tree()->get_edited_scene_root();
|
||||
if (base) {
|
||||
base = _find_node_for_script(base,base,script);
|
||||
}
|
||||
String hint;
|
||||
Error err = script->get_language()->complete_code(p_code,script->get_path().get_base_dir(),base,r_options,hint);
|
||||
if (hint!="") {
|
||||
get_text_edit()->set_code_hint(hint);
|
||||
print_line("hint: "+hint.replace(String::chr(0xFFFF),"|"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1559,21 +1585,21 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
|
|||
edit_menu = memnew( MenuButton );
|
||||
menu_hb->add_child(edit_menu);
|
||||
edit_menu->set_text("Edit");
|
||||
edit_menu->get_popup()->add_item("Undo",EDIT_UNDO,KEY_MASK_CMD|KEY_Z);
|
||||
edit_menu->get_popup()->add_item("Redo",EDIT_REDO,KEY_MASK_CMD|KEY_Y);
|
||||
edit_menu->get_popup()->add_item("Undo",EDIT_UNDO,KEY_MASK_CMD|KEY_Z);
|
||||
edit_menu->get_popup()->add_item("Redo",EDIT_REDO,KEY_MASK_CMD|KEY_Y);
|
||||
edit_menu->get_popup()->add_separator();
|
||||
edit_menu->get_popup()->add_item("Cut",EDIT_CUT,KEY_MASK_CMD|KEY_X);
|
||||
edit_menu->get_popup()->add_item("Copy",EDIT_COPY,KEY_MASK_CMD|KEY_C);
|
||||
edit_menu->get_popup()->add_item("Paste",EDIT_PASTE,KEY_MASK_CMD|KEY_V);
|
||||
edit_menu->get_popup()->add_separator();
|
||||
edit_menu->get_popup()->add_item("Select All",EDIT_SELECT_ALL,KEY_MASK_CMD|KEY_A);
|
||||
edit_menu->get_popup()->add_separator();
|
||||
edit_menu->get_popup()->add_item("Move Up",EDIT_MOVE_LINE_UP,KEY_MASK_ALT|KEY_UP);
|
||||
edit_menu->get_popup()->add_item("Move Down",EDIT_MOVE_LINE_DOWN,KEY_MASK_ALT|KEY_DOWN);
|
||||
edit_menu->get_popup()->add_item("Indent Left",EDIT_INDENT_LEFT,KEY_MASK_ALT|KEY_LEFT);
|
||||
edit_menu->get_popup()->add_item("Indent Right",EDIT_INDENT_RIGHT,KEY_MASK_ALT|KEY_RIGHT);
|
||||
edit_menu->get_popup()->add_item("Toggle Comment",EDIT_TOGGLE_COMMENT,KEY_MASK_CMD|KEY_SLASH);
|
||||
edit_menu->get_popup()->add_item("Clone Down",EDIT_CLONE_DOWN,KEY_MASK_CMD|KEY_B);
|
||||
edit_menu->get_popup()->add_separator();
|
||||
edit_menu->get_popup()->add_item("Move Up",EDIT_MOVE_LINE_UP,KEY_MASK_ALT|KEY_UP);
|
||||
edit_menu->get_popup()->add_item("Move Down",EDIT_MOVE_LINE_DOWN,KEY_MASK_ALT|KEY_DOWN);
|
||||
edit_menu->get_popup()->add_item("Indent Left",EDIT_INDENT_LEFT,KEY_MASK_ALT|KEY_LEFT);
|
||||
edit_menu->get_popup()->add_item("Indent Right",EDIT_INDENT_RIGHT,KEY_MASK_ALT|KEY_RIGHT);
|
||||
edit_menu->get_popup()->add_item("Toggle Comment",EDIT_TOGGLE_COMMENT,KEY_MASK_CMD|KEY_SLASH);
|
||||
edit_menu->get_popup()->add_item("Clone Down",EDIT_CLONE_DOWN,KEY_MASK_CMD|KEY_B);
|
||||
edit_menu->get_popup()->add_separator();
|
||||
edit_menu->get_popup()->add_item("Complete Symbol",EDIT_COMPLETE,KEY_MASK_CMD|KEY_SPACE);
|
||||
edit_menu->get_popup()->add_item("Auto Indent",EDIT_AUTO_INDENT,KEY_MASK_CMD|KEY_I);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue