You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Making Godot Easier to Use..
-=-=-=-=-=-=-=-=-=-=-=-=-=-= -Auto indenter in code editor, this makes it much easier to paste external code. -Zoom in 2D viewport now uses the mouse pointer as reference. -Obscure hack to see where code/line of GDScript in C++ backtrace. -Fixed a bug where keys would get stuck on X11 if pressed simultaneously -Added Api on IP singleton to request local IPs. -Premultiplied alpha support when importing texture, editing PNGs and as a blend mode.
This commit is contained in:
@@ -787,3 +787,67 @@ Error GDScriptLanguage::complete_keyword(const String& p_code, int p_line, const
|
||||
return OK;
|
||||
}
|
||||
|
||||
void GDScriptLanguage::auto_indent_code(String& p_code,int p_from_line,int p_to_line) const {
|
||||
|
||||
|
||||
Vector<String> lines = p_code.split("\n");
|
||||
List<int> indent_stack;
|
||||
|
||||
for(int i=0;i<lines.size();i++) {
|
||||
|
||||
String l = lines[i];
|
||||
int tc=0;
|
||||
for(int j=0;j<l.length();j++) {
|
||||
if (l[j]==' ' || l[j]=='\t') {
|
||||
|
||||
tc++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String st = l.substr(tc,l.length()).strip_edges();
|
||||
if (st=="" || st.begins_with("#"))
|
||||
continue; //ignore!
|
||||
|
||||
int ilevel=0;
|
||||
if (indent_stack.size()) {
|
||||
ilevel=indent_stack.back()->get();
|
||||
}
|
||||
|
||||
if (tc>ilevel) {
|
||||
indent_stack.push_back(tc);
|
||||
} else if (tc<ilevel) {
|
||||
while(indent_stack.size() && indent_stack.back()->get()>tc) {
|
||||
indent_stack.pop_back();
|
||||
}
|
||||
|
||||
if (indent_stack.size() && indent_stack.back()->get()!=tc)
|
||||
indent_stack.push_back(tc); //this is not right but gets the job done
|
||||
}
|
||||
|
||||
if (i>=p_from_line) {
|
||||
|
||||
l="";
|
||||
for(int j=0;j<indent_stack.size();j++)
|
||||
l+="\t";
|
||||
l+=st;
|
||||
|
||||
|
||||
} else if (i>p_to_line) {
|
||||
break;
|
||||
}
|
||||
|
||||
//print_line(itos(indent_stack.size())+","+itos(tc)+": "+l);
|
||||
lines[i]=l;
|
||||
}
|
||||
|
||||
p_code="";
|
||||
for(int i=0;i<lines.size();i++) {
|
||||
if (i>0)
|
||||
p_code+="\n";
|
||||
p_code+=lines[i];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user