1 21 22 package org.armedbear.j; 23 24 import java.awt.event.KeyEvent ; 25 26 public final class AsmMode extends AbstractMode implements Constants, Mode 27 { 28 private static final AsmMode mode = new AsmMode(); 29 30 private AsmMode() 31 { 32 super(ASM_MODE, ASM_MODE_NAME); 33 setProperty(Property.INDENT_SIZE, 8); 34 } 35 36 public static AsmMode getMode() 37 { 38 return mode; 39 } 40 41 public String getCommentStart() 42 { 43 return "; "; 44 } 45 46 public Formatter getFormatter(Buffer buffer) 47 { 48 return new AsmFormatter(buffer); 49 } 50 51 protected void setKeyMapDefaults(KeyMap km) 52 { 53 km.mapKey(KeyEvent.VK_ENTER, 0, "newlineAndIndent"); 54 km.mapKey(KeyEvent.VK_F9, 0, "compile"); 55 km.mapKey(KeyEvent.VK_F9, CTRL_MASK, "recompile"); 56 } 57 58 public boolean canIndent() 59 { 60 return true; 61 } 62 63 public boolean canIndentPaste() 64 { 65 return false; 66 } 67 68 public int getCorrectIndentation(Line line, Buffer buffer) 69 { 70 final int indentSize = buffer.getIndentSize(); 71 final Line model = findModel(line); 72 if (model == null) 73 return 0; 74 if (model.getText().trim().endsWith(":")) 75 return indentSize; 76 return buffer.getIndentation(model); 77 } 78 79 private Line findModel(Line line) 80 { 81 Line model = line.previous(); 82 while (model != null && model.isBlank()) 83 model = model.previous(); 84 return model; 85 } 86 } 87 | Popular Tags |