shigma / vscode-wl

Wolfram Language support for Visual Studio Code.
MIT License
49 stars 4 forks source link

Detailed division of categories #3

Closed oovm closed 5 years ago

oovm commented 5 years ago

Detailed divisions:

{Constant,Flat,HoldAll,HoldAllComplete,HoldFirst,HoldRest,Listable,Locked,NHoldAll,NHoldFirst,NHoldRest,NumericFunction,OneIdentity,Orderless,Protected,ReadProtected,SequenceHold,Stub,Temporary}

把这些划分为 constant.language.attribute, 这些是 Symbol 的属性, 且不可自定义.

tim 20181202162129

Option 的指定列表左边肯定是 Option, 不管原来是什么.

Options 和 Attribute 虽说可以作用于 symbol, 但是一般还是希望对一个函数设定的, 至少别和普通的变量归在一起

类似的还有这俩函数的 Set 形式, 还有 function::message 左边的部分, 至少不应该都扔 variable.other 里和别的普通变量混一起

oovm commented 5 years ago

(* ::Section:: *) 和markdown中的 title 类似, 所以应该归类为 entity.name.section

注意匹配特殊用法 (* ::Section::Closed:: *)

Context`Function 这样的函数, 希望能划分成 entity.name.function.contextentity.name.function 两部分

同理模式匹配 var_type 也应该划分为 variable.parameter + variable.parameter.head

variable.parameter.option

variable.parameter.lambda

& 被归类为entity.name.function 很可疑, 注意到 &Function 的简写

//. 解析错误, 没有被解析为一个符号

oovm commented 5 years ago

Option这个问题太过复杂,我还要思考一下到底怎么处理比较好

shigma commented 5 years ago

& 被归类为entity.name.function 很可疑, 注意到 &Function 的简写

那么依你所见,用啥好呢~

shigma commented 5 years ago

同理模式匹配 var_type 也应该划分为 variable.parameter + variable.parameter.head

现在没有吗?

var__head
^^^^^^^^^ variable.parameter
   ^^ variable.parameter.blank.wolfram
     ^^^^ variable.parameter.head.wolfram
shigma commented 5 years ago

详见 e0bea21。


有关 Context 的问题已经解决。可以尝试下面的三种使用方式:

foo`bar`baz
foo`bar`baz[]
System`Cos[]

它们的 scope name 都进行了细化。


其他一些细节上的补充:


PS 我困了……剩下的问题你再描述地详细一点,我有时间处理。(同时也欢迎 PR ~~)

shigma commented 5 years ago

constant.language.attribute.wolfram 现已加入肯德基豪华午餐语法。