Revision: 28873
http://sourceforge.net/p/bibdesk/svn/28873
Author: hofman
Date: 2024-04-28 14:32:56 +0000 (Sun, 28 Apr 2024)
Log Message:
-----------
Display prefix matches for macros before substring matches and matches to
expansion in completion list, makes it also easy to find a full string match as
it will be the first one if any.
Modified Paths:
--------------
trunk/bibdesk/BDSKCompletionManager.m
Modified: trunk/bibdesk/BDSKCompletionManager.m
===================================================================
--- trunk/bibdesk/BDSKCompletionManager.m 2024-04-27 15:49:12 UTC (rev
28872)
+++ trunk/bibdesk/BDSKCompletionManager.m 2024-04-28 14:32:56 UTC (rev
28873)
@@ -262,7 +262,7 @@
[completions
sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
- if (matched)
+ if (matched && idx)
*idx = [completions indexOfObject:matched];
return completions;
@@ -289,22 +289,28 @@
- (NSArray *)possibleMatches:(NSMapTable *)definitions
forBibTeXString:(NSString *)fullString partialWordRange:(NSRange)charRange
indexOfBestMatch:(NSInteger *)idx{
NSString *partialString = [fullString substringWithRange:charRange];
NSMutableArray *matches = [NSMutableArray array];
- NSString *bestMatch = nil;
+ NSMutableArray *subMatches = [NSMutableArray array];
// Search the definitions case-insensitively; we match on key or value,
but only return keys.
for (NSString *key in definitions) {
- if ([key rangeOfString:partialString
options:NSCaseInsensitiveSearch].location != NSNotFound ||
- ([definitions objectForKey:key] != nil && [[definitions
objectForKey:key] rangeOfString:partialString
options:NSCaseInsensitiveSearch].location != NSNotFound)) {
- [matches addObject:key];
- if ([key isCaseInsensitiveEqual:partialString] || (bestMatch ==
nil && [key hasPrefix:partialString]))
- bestMatch = key;
+ NSRange range = [key rangeOfString:partialString
options:NSCaseInsensitiveSearch];
+ if (range.location != NSNotFound) {
+ if (range.location == 0)
+ [matches addObject:key];
+ else
+ [subMatches addObject:key];
+ } else if ([[definitions objectForKey:key]
hasCaseInsensitivePrefix:partialString]) {
+ [subMatches addObject:key];
}
}
[matches sortUsingSelector:@selector(caseInsensitiveCompare:)];
+ [subMatches sortUsingSelector:@selector(caseInsensitiveCompare:)];
- if (bestMatch)
- *idx = [matches indexOfObject:bestMatch];
+ if ([[matches firstObject] length] == [partialString length])
+ *idx = 0;
+ [matches addObjectsFromArray:subMatches];
+
// we show the expansion in the list, this is removed by possibleMatch:
when actually inserting
NSMutableArray *displayMatches = [NSMutableArray array];
for (NSString *key in matches)
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit