Re[4]: Кто может написать контрол - крутой хинт?
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.09 20:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В частности, есть непонятки с переносом текста, нужен ли для него отдельный тэг?


Подумал по-лучше...

Пожалуй, что нужно, но не просто тег говорящий, что вот тут нужно начать новый абзац, а нечто более сложное.

Смотри... У нас могут быть простые методы вроде:
SomeMethod(arg1 : string) : int

Если такой метод изображать перенесенным:
public SomeMethod(
  arg1 : string
) : int

то восприятие только ухудшится.
С другой стороны у нас могут быть вот такие методы:
public Nemerle.Compiler.Utils.Utils.MakeTextHintForTExprMethodRef(
  expr       : Nemerle.Compiler.Typedtree.TExpr,
  obj        : Nemerle.Compiler.Typedtree.TExpr,
  method     : Nemerle.Compiler.IMethod,
  typeArgs   : list[Nemerle.Compiler.TyVar],
  notvirtual : bool,
  ) : string

их как раз очень плохо отображать в одну строку:
public Nemerle.Compiler.Utils.Utils.MakeTextHintForTExprMethodRef(expr : Nemerle.Compiler.Typedtree.TExpr, obj : Nemerle.Compiler.Typedtree.TExpr, method : Nemerle.Compiler.IMethod, typeArgs : list[Nemerle.Compiler.TyVar],   notvirtual : bool) : string

Даже если сократить все тип:
public Utils.MakeTextHintForTExprMethodRef(expr : TExpr, obj : TExpr, method : IMethod, typeArgs : list[TyVar],   notvirtual : bool) : string

представление получается длинноватым.

Хорошо бы реализовать следующую фичу...

В некоторых тегах (например, в теге code), некоторые символы должны интерпретироваться как "мягкие" концы строк и как символы "табличного выравнивания". В примере выше символом мягкого конца
строки должна служить запятая, а символом табличного выравнивания двоеточие.
Реализация хинта должна попытаться втиснуть содержимое такого тега в область хинта. Если это удается, то никаких дополнительных действий производить не надо. Если — нет, то нужно добавить концы строк полсе каждой запятой и по табуляции перед каждым двоеточием.
В итоге код в хинте должен выглядить следующим образом:
public Utils.MakeTextHintForTExprMethodRef(
  expr       : TExpr,
  obj        : TExpr,
  method     : IMethod,
  typeArgs   : list[TyVar],
  notvirtual : bool,
  ) : string

естественно, что каждый тип должен быть под-хинтом, слова "public" и встроенные типы (bool и string в данном примере) подсвечены синим.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.