pass space
authorEugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com>
Thu, 11 Feb 2010 13:43:05 +0000 (16:43 +0300)
committerEugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com>
Thu, 11 Feb 2010 13:43:05 +0000 (16:43 +0300)
platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java

index 252d949f127268613775e0339fdf860b28292df7..9886c9d69eac9cf21fe48120e7d15755bdac620b 100644 (file)
@@ -201,13 +201,17 @@ public class TemplateManagerImpl extends TemplateManager implements ProjectCompo
     int i = caretOffset - 1;
     for (; i >= 0; i--) {
       char c = text.charAt(i);
-      if (!Character.isJavaIdentifierPart(c)) {
+      if (isDelimiter(c)) {
         break;
       }
     }
     return i + 1;
   }
 
+  private static boolean isDelimiter(char c) {
+    return !Character.isJavaIdentifierPart(c);
+  }
+
   private static <T, U> void addToMap(@NotNull Map<T, U> map, @NotNull Collection<? extends T> keys, U value) {
     for (T key : keys) {
       map.put(key, value);
@@ -340,8 +344,13 @@ public class TemplateManagerImpl extends TemplateManager implements ProjectCompo
                                       @Nullable final PairProcessor<String, String> processor,
                                       @Nullable String argument) {
     final int caretOffset = editor.getCaretModel().getOffset();
-    int startOffset = caretOffset - template.getKey().length();
+    String key = template.getKey();
+    int startOffset = caretOffset - key.length();
     if (argument != null) {
+      if (!isDelimiter(key.charAt(key.length() - 1))) {
+        // pass space
+        startOffset--;
+      }
       startOffset -= argument.length();
     }
     startTemplateWithPrefix(editor, template, startOffset, processor, argument);