Aisllin Yu
Aisllin Yu
遇到一个挺迷的bug,推测与auto有关 如上图,第一条用红框框出的uri实际并不存在于uriTree,它的真身应该是第二个红框内的uri。 输入的oldURI和newURI为: ``` def://app/src/main/res/layout/toolbar.xml[language=FILE]//LinearLayout/android.support.v7.widget.Toolbar/android:id[language=XML]//@+id\\/toolbar[language=ANY] def://app/src/main/res/layout/toolbar.xml[language=FILE]//LinearLayout/android.support.v7.widget.Toolbar/android:id[language=XML]//@+id\\/tool_bar[language=ANY] ``` 这种情况发生在我使用如下的rule时: ```yaml r-id: use: lang: JAVA file: '(&javaFile).java' identifier: R.id.(name) def: lang: XML file: (&layoutName).xml identifier: android:id inline: identifier: '@+id\/(name)' ``` 如果给name加上modifier就不会出现: ```yaml...
为了实现对xml文件中并非直接与java元素link的identifier的rename,我加入了以下rule: ```yaml r-xml-inner: # hidden: true def: lang: XML file: (&layoutName).xml identifier: android:id inline: identifier: '@+id\/(&name)' use: lang: XML file: (&layoutName).xml identifier: "*constraint*" inline: identifier: '*\/(&name)' ``` 根据这条rule可以在某个例子中得到如下的inner link: ```...
``` // input use://app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java[language=FILE]//DescriptionFragment/setupUploadDate/binding.detailUploadDateView[language=JAVA] use://app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java[language=FILE]//DescriptionFragment/setupUploadDate/binding.uploadDateView[language=JAVA] // output def://app/src/main/res/layout/fragment_description.xml[language=FILE]//androidx.core.widget.NestedScrollView/androidx.constraintlayout.widget.ConstraintLayout/TextView/android:id[language=XML]//@+id\\/detail_upload_date_view[language=ANY] def://app/src/main/res/layout/fragment_description.xml[language=FILE]//androidx.core.widget.NestedScrollView/androidx.constraintlayout.widget.ConstraintLayout/TextView/android:id[language=XML]//@+id\\/uploadDateView[language=ANY] ``` 使用的rule: ```yaml # binding.widgetId @+id/widgetId r-dataBinding: use: lang: JAVA file: '(&javaFile).java' identifier: (&bindingVar).(name:camel) def: lang: XML file: (&layoutName).xml identifier: android:id...
一般情况下,开发者完全按照规范中规定的case命名,比如: ``` def: @+id/widget_name use: binding.widgetName ``` 因为widget_name从snake case转为camel case是widgetName,所以这个例子是正确的。 有部分特殊情况下,命名并没有那么规范,比如: ``` def: @+id/widgetName use: binding.widgetName ``` 因为widgeName作为snake case被视为单个词组成的,转为camel case也是widgetName,所以这个例子也是正确的。 对于这个xll pattern,我们写的rule为: 但这条rule无法捕捉到特殊情况下的case。 考虑在modifier缺省的情况下自动分割identifier,使在rule定义为下图时,一般情况和特殊情况都能被捕捉。
@Shigma 之前默认的行为是单条use只匹配多条def,按优先级匹配,一条use匹配到了def以后,优先级较低的rule就算也能为这条use匹配到def也不会被计入结果。 但是针对这个设计有一些反例。 情况1:由于动态因素等的介入,一个ref identifier本身就对应多个def 如在安卓项目中存在不同尺寸的layout文件,虽然组件组成相同(即文件内容)但放在不同路径下 但在java文件中对组件的引用并不会分开写,所以此处的引用标识符应当理解为有两处def: 不过这个例子在实际focus中并不会有问题,它会被判定为ambiguous,但最终输出依然会同时包含这两个link,因为它们同属于一条rule。我没能找到更适合的例子,所以编个假设情景:如果有例子里两个def对应的rule不同的话(比如,如果我写的rule更加精确,r-layout这条rule只匹配layout文件夹下的layout文件,另设一条rule只匹配layout-large-land下的layout文件),就会出现问题。 情况2:设想两条rule,存在两条link分别对应这两条rule并且use uri相同。为什么会存在这样的写法是因为两条rule匹配的重点不一样,一条rule匹配的是一个变量本身,另一条rule匹配的是这个变量对应的uri的其他要素,比如varType attribute。编个例子: ```yaml r1: use: identifier: (class)/(name) def: identifier: (sqlTag)/#{(name)} r2: use: identifier: (name) varType: (layout)Binding def: file: (layout).xml ``` 不过这只是个纯设想的情景,贴上来只是起个参考作用,应该并没有实际的rule有这样的情况...
My nodeJS version is 14.17.0, using yarn v1.22.10 as the package manager. My OS is macOS Big Sur 11.2.3. When I add tree-sitter and tree-sitter-javascript to my vscode extension development...
input: ``` def://sagan-site/src/main/java/sagan/site/blog/support/BlogAdminController.java[language=FILE]//BlogAdminController/newPost/model.addAttribute[language=JAVA]//formats[language=ANY] def://sagan-site/src/main/java/sagan/site/blog/support/BlogAdminController.java[language=FILE]//BlogAdminController/newPost/model.addAttribute[language=JAVA]//formatsObj[language=ANY] ``` rename pair: ``` use://sagan-site/src/main/resources/templates/admin/blog/new.html[language=FILE]//html/body/form/div/div/div/div/div/select/option/data-th-each[language=HTML]//${formats}[language=ANY] use://sagan-site/src/main/resources/templates/admin/blog/resources/templates/admin/blog/new.html[language=FILE]//html/body/form/div/div/div/div/div/select/option/data-th-each[language=HTML]//${formatsObj}[language=ANY] ``` 在图中例子里,oldURI的file层为sagan-site/src/main/resources/templates/admin/blog/new.html,rename后newURI的file层变成sagan-site/src/main/resources/templates/admin/blog/resources/templates/admin/blog/new.html
比如下面这段话: ``` 想象一下,阳光斑斓地倾洒在脉脉流淌的小溪上,流水轻轻地拍打着河岸,就像是自然界最和谐的乐章。小鸟在枝头轻轻啁啾,似乎在讲述着自己的故事,声音悦耳到连大自然都静静聆听。在这样一个明媚的下午,我坐在一棵古老的橡树下,享受着微风带来的温柔的抚慰。 ``` 试了在线demo和我自己微调的模型,都会读错“脉脉”和“啁啾”(版本为1.1)。 很好奇是数据原因还是编码问题