Changeset 187
- Timestamp:
- 10/30/02 20:36:30 (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/j/src/org/armedbear/j/LispMode.java
r172 r187 3 3 * 4 4 * Copyright (C) 1998-2002 Peter Graves 5 * $Id: LispMode.java,v 1.1 0 2002-10-21 17:01:28piso Exp $5 * $Id: LispMode.java,v 1.11 2002-10-30 20:36:30 piso Exp $ 6 6 * 7 7 * This program is free software; you can redistribute it and/or … … 23 23 24 24 import java.awt.event.KeyEvent; 25 import org.armedbear.lisp.*; 25 26 26 27 public class LispMode extends AbstractMode implements Constants, Mode … … 119 120 } 120 121 122 private final String[] specials = new String[] { 123 "case", "ecase", "do", "do*", "flet", "lambda", "let", "let*", "loop", 124 "progn", "typecase", "unless", "when" 125 }; 126 127 private final String[] hemlockSpecials = new String[] { 128 "frob", "with-mark" 129 }; 130 121 131 public int getCorrectIndentation(Line line, Buffer buffer) 122 132 { 123 if (line.flags() == STATE_QUOTE) 124 return 0; 125 Line model = findModel(line); 133 final Line model = findModel(line); 126 134 if (model == null) 127 135 return 0; 136 final int modelIndent = buffer.getIndentation(model); 128 137 final String modelTrim = model.trim(); 138 if (line.flags() == STATE_QUOTE) { 139 if (modelTrim.length() > 0 && modelTrim.charAt(0) == '"') 140 return modelIndent + 1; 141 else 142 return modelIndent; 143 } 129 144 if (modelTrim.length() == 0) 130 145 return 0; 131 146 if (modelTrim.charAt(0) == ';') 132 return buffer.getIndentation(model); 133 147 return modelIndent; 134 148 final int indentSize = buffer.getIndentSize(); 135 149 Position pos = findContainingSexp(new Position(line, 0)); … … 147 161 // Otherwise... 148 162 String token = gatherToken(it.getPosition()); 149 if (token.equals("if")) {150 int depth = depth(line, buffer);151 int modelDepth = depth(model, buffer);152 if (pos.getLine() == model || modelDepth > depth)153 return buffer.getCol(pos) + indentSize * 2;154 else155 return buffer.getCol(pos) + indentSize;156 }157 if (token.equals("prog1")) {158 if (pos.getLine() == model)159 return buffer.getCol(pos) + indentSize * 2;160 else161 return buffer.getCol(pos) + indentSize;162 }163 if (token.equals("let"))164 return buffer.getCol(pos) + indentSize;165 if (token.equals("while"))166 return buffer.getCol(pos) + indentSize;167 if (token.equals("when"))168 return buffer.getCol(pos) + indentSize;169 if (token.equals("unless"))170 return buffer.getCol(pos) + indentSize;171 if (token.equals("unwind-protect"))172 return buffer.getCol(pos) + indentSize;173 163 if (token.startsWith("def")) 174 164 return buffer.getCol(pos) + indentSize; 175 pos = forwardSexp(pos);176 if (pos != null)177 return buffer.getCol(pos);178 break; // Fall through.179 }180 }181 182 int depth = depth(line, buffer);183 if (depth > 0)184 return indentSize * depth;165 if (Utilities.isOneOf(token, specials)) 166 return buffer.getCol(pos) + indentSize; 167 if (Utilities.isOneOf(token, hemlockSpecials)) 168 return buffer.getCol(pos) + indentSize; 169 Position next = forwardSexp(pos); 170 if (next != null && next.getLine() == pos.getLine()) 171 return buffer.getCol(next); 172 return buffer.getCol(pos) + 1; 173 } 174 } 185 175 return 0; 186 176 }
Note: See TracChangeset
for help on using the changeset viewer.