加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Emacs中的多语言语法高亮显示

发布时间:2020-12-16 23:02:45 所属栏目:Python 来源:网络整理
导读:假设我在单个缓冲区中有多种语言的代码,我可以根据相应的语言使用emacs语法突出显示每个代码段吗? 例如,以下代码是python脚本的一部分,但它包含SQL代码: import psycopg2 as pgimport pandas.io.sql as psql# Some SQL code:my_query ='''select count(dis
假设我在单个缓冲区中有多种语言的代码,我可以根据相应的语言使用emacs语法突出显示每个代码段吗?

例如,以下代码是python脚本的一部分,但它包含SQL代码:

import psycopg2 as pg
import pandas.io.sql as psql

# Some SQL code:
my_query ='''
select count(distinct s.object_uid) 
from dx.dx_segment as s;
'''
# end of SQL code

dataframe = psql.frame_query(my_query,connection)

将SQL部分突出显示为SQL语法会很棒,而文件的其余部分则突出显示为Python.

这在Emacs中可能吗?有什么方法可以向Emacs暗示要使用哪种荧光笔,或许可以利用这些评论?

解决方法

当我在C中使用一些SQL时,我有一个使用MMM模式的系统;将所需语句包装在一组注释中,
/* SQL */

/* #SQL */

以下将给我SQL语法高亮:

(require 'mmm-mode)
 (set-face-background 'mmm-default-submode-face nil)

 (mmm-add-classes
  '((embedded-sql
     :submode sql-mode
     :front "/* SQL */"
     :back "/* #SQL */")))

 (mmm-add-mode-ext-class 'c-mode "*.c" 'c-sql)
 (setq mmm-never-modes
               (append '(ediff-mode) '(text-mode) mmm-never-modes))

然后我可以使用mmm-ify-by-class来应用c-sql类 – 也许你可以在Python中做类似的事情?

对我来说,以下lisp允许Emacs将示例python中的示例SQL字符串看作SQL(浅灰色背景表示MMM模式处于活动状态)

(再次修改以允许单行语句)

(require 'mmm-mode)

(mmm-add-classes
 '((python-sql
    :submode sql-mode
    :face mmm-code-submode-face
    :front "# SQL(n|t)*([ -_A-Z0-9]+)([ =])("""|''')"
    :back "("""|''')( |t|n)*# /SQL")))

(mmm-add-mode-ext-class 'python-mode "*.py" 'python-sql)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读