mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-30 04:15:35 +02:00
Fixed ordering of includes - A.h should be shorted before A_a.h
This commit is contained in:
parent
82490d5bd6
commit
0fda1c9c85
1 changed files with 28 additions and 12 deletions
|
@ -10,9 +10,6 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.refactoring.includes;
|
package org.eclipse.cdt.internal.ui.refactoring.includes;
|
||||||
|
|
||||||
import org.eclipse.core.runtime.IPath;
|
|
||||||
import org.eclipse.core.runtime.Path;
|
|
||||||
|
|
||||||
import com.ibm.icu.text.Collator;
|
import com.ibm.icu.text.Collator;
|
||||||
|
|
||||||
public class IncludeInfo implements Comparable<IncludeInfo> {
|
public class IncludeInfo implements Comparable<IncludeInfo> {
|
||||||
|
@ -94,18 +91,37 @@ public class IncludeInfo implements Comparable<IncludeInfo> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(IncludeInfo other) {
|
public int compareTo(IncludeInfo other) {
|
||||||
if (isSystem != other.isSystem) {
|
if (isSystem != other.isSystem)
|
||||||
return isSystem ? -1 : 1;
|
return isSystem ? -1 : 1;
|
||||||
}
|
|
||||||
IPath path1 = Path.fromOSString(name);
|
int length1 = name.length();
|
||||||
IPath path2 = Path.fromOSString(other.name);
|
int length2 = other.name.length();
|
||||||
int length1 = path1.segmentCount();
|
|
||||||
int length2 = path2.segmentCount();
|
|
||||||
for (int i = 0; i < length1 && i < length2; i++) {
|
for (int i = 0; i < length1 && i < length2; i++) {
|
||||||
int c = COLLATOR.compare(path1.segment(i), path2.segment(i));
|
char c1 = name.charAt(i);
|
||||||
if (c != 0)
|
char c2 = other.name.charAt(i);
|
||||||
return c;
|
int o1 = order(c1);
|
||||||
|
int o2 = order(c2);
|
||||||
|
if (o1 != o2)
|
||||||
|
return o1 - o2;
|
||||||
|
if (o1 == 0) {
|
||||||
|
int c = COLLATOR.compare(String.valueOf(c1), String.valueOf(c2));
|
||||||
|
if (c != 0)
|
||||||
|
return c;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return length1 - length2;
|
return length1 - length2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int order(char c) {
|
||||||
|
switch (c) {
|
||||||
|
case '/':
|
||||||
|
return -3;
|
||||||
|
case '\\':
|
||||||
|
return -2;
|
||||||
|
case '.':
|
||||||
|
return -1;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue