【发布时间】:2020-03-29 00:55:32
【问题描述】:
Notepad++ 与 Scintilla 词法分析器一起工作,以某种方式识别 .php 文件中的语言切换。它似乎默认为 HTML,并将 <?php ... ?> 和 <script type="text/javascript">...</script> 识别为嵌入式 PHP 和 javascript 语言的分隔符,因此应用了正确的语法突出显示和代码完成。
问题:是否有可能让它对 SQL 做同样的事情,也许使用诸如 <<<sql ... sql 之类的 heredoc 分隔符?
我搜索了 web 和 notepad++ 论坛,但没有成功。 UDL 根据其扩展名处理文件的内容,这无济于事,因为我专门在 .php 文件中寻找代码嵌入。我还尝试在记事本的 ProgramData 文件夹中挖掘文件,但找不到任何定义语言切换分隔符的内容。
SQL 的记事本插件都希望将文件的全部内容格式化为 sql,所以这也无济于事,我只希望它仅与 embedded 部分一起使用。事实上,我宁愿找到一个没有插件也能工作的解决方案。
编辑:按要求提供示例代码
<p>Some html code here</p>
<?php
$value1 = 1234;
$sql = <<<sql
select * from table1
where column1 = $value1
sql;
$rows = mysqli->query($sql);
?>
<script type="text/javascript">
var results = <?php echo queryToJSresults($rows);?>;
</script>
Notepad++ 中的所有语法都正确突出显示。我想要的是使用 SQL 语言突出显示 <<<sql 和 sql 之间的位。目前它(正确地)将其视为字符串文字,与带引号的字符串相同。
【问题讨论】:
-
Notepad++ 插件 SQLinForm 顺便说一句不起作用,因为当前版本坚持将其样式应用于整个脚本,尽管选择了“格式化选择的 SQL”。它也有自己的解析器,不应用我用于 SQL 文件的 NPP 样式。
-
也许您可以添加一个小示例文件来显示不同的嵌入式语言部分?
标签: php sql notepad++ syntax-highlighting