src/Pure/PIDE/command.scala
changeset 56335 8953d4cc060a
parent 56301 1da7b4c33db9
child 56359 bca016a9a18d
equal deleted inserted replaced
56334:6b3739fee456 56335:8953d4cc060a
   223         }
   223         }
   224      inc(symbol_range) orElse inc(symbol_range - 1)
   224      inc(symbol_range) orElse inc(symbol_range - 1)
   225     }
   225     }
   226   }
   226   }
   227 
   227 
       
   228   // file name and position information, *without* persistent text
   228   class File(val file_name: String, text: CharSequence) extends Chunk
   229   class File(val file_name: String, text: CharSequence) extends Chunk
   229   {
   230   {
   230     val length = text.length
   231     val length = text.length
   231     val range = Text.Range(0, length)
   232     val range = Text.Range(0, length)
   232     private val symbol_index = Symbol.Index(text)
   233     private val symbol_index = Symbol.Index(text)
   233     def decode(symbol_range: Symbol.Range): Text.Range = symbol_index.decode(symbol_range)
   234     def decode(symbol_range: Symbol.Range): Text.Range = symbol_index.decode(symbol_range)
   234 
   235 
       
   236     private val hash: Int = (file_name, length, symbol_index).hashCode
       
   237     override def hashCode: Int = hash
       
   238     override def equals(that: Any): Boolean =
       
   239       that match {
       
   240         case other: File =>
       
   241           hash == other.hash &&
       
   242           file_name == other.file_name &&
       
   243           length == other.length &&
       
   244           symbol_index == other.symbol_index
       
   245         case _ => false
       
   246       }
   235     override def toString: String = "Command.File(" + file_name + ")"
   247     override def toString: String = "Command.File(" + file_name + ")"
   236   }
   248   }
   237 
   249 
   238 
   250 
   239   /* make commands */
   251   /* make commands */