1 21 22 package org.armedbear.j; 23 24 import java.awt.event.KeyEvent ; 25 26 public final class CSSMode extends AbstractMode implements Constants, Mode 27 { 28 private static final CSSMode mode = new CSSMode(); 29 30 private CSSMode() 31 { 32 super(CSS_MODE, CSS_MODE_NAME); 33 } 34 35 public static CSSMode getMode() 36 { 37 return mode; 38 } 39 40 public Formatter getFormatter(Buffer buffer) 41 { 42 return new CSSFormatter(buffer); 43 } 44 45 protected void setKeyMapDefaults(KeyMap km) 46 { 47 km.mapKey(KeyEvent.VK_ENTER, 0, "newlineAndIndent"); 48 } 49 50 public boolean canIndent() 51 { 52 return true; 53 } 54 55 public boolean canIndentPaste() 56 { 57 return false; 58 } 59 60 public int getCorrectIndentation(Line line, Buffer buffer) 61 { 62 final int indentSize = buffer.getIndentSize(); 63 final Line model = findModel(line); 64 if (model == null) 65 return 0; 66 final int modelIndent = buffer.getIndentation(model); 67 if (model.getText().trim().endsWith("{")) 68 return modelIndent + indentSize; 69 return modelIndent; 70 } 71 72 private Line findModel(Line line) 73 { 74 Line model = line.previous(); 75 while (model != null && model.isBlank()) 76 model = model.previous(); 77 return model; 78 } 79 80 public boolean isIdentifierStart(char c) 81 { 82 return startChars.indexOf(c) >= 0; 83 } 84 85 public boolean isIdentifierPart(char c) 86 { 87 return partChars.indexOf(c) >= 0; 88 } 89 90 private static final String startChars = 91 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 92 93 private static final String partChars = 94 "-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"; 95 } 96 | Popular Tags |