修改Sublime的注釋格式

提出問題

群里有個朋友提出這個問題.

問個問題:
使用 perl 語言開發(fā),
當(dāng)我使用 command+/ 快捷鍵完成注釋時,
他會自動在代碼前面添加一個井號和空格剥槐,
問一下我要如何修改可以讓他不多加這個空格呢沿后?

我期望的注釋風(fēng)格是:#warn 'hello world';

So, 將解決過程記錄下來.

定位問題

  • 打開Sublime的控制臺(Ctrl + `), 查看啟動日志.
...
ignored_packages: ["Vintage"]
pre session restore time: 0.19431
warning: mnemonic v not found in menu caption SVN
startup time: 0.26231
first paint time: 0.26631
first paint time: 0.26731
reloading plugin Default.auto_indent_tag
reloading plugin Default.block
reloading plugin Default.comment # <-- 注意這一行
reloading plugin Default.convert_syntax
reloading plugin Default.copy_path
reloading plugin Default.delete_word
reloading plugin Default.detect_indentation
reloading plugin Default.duplicate_line
...

  • Default.comment這個就是Sublime自帶的文本注釋代碼. 修改這個文件, 就可以達(dá)到我們的目的.

  • So, 有2個思路:

  1. 解壓Default.sublime-package, 修改里面的comment.py, 再打包成Default.sublime-package, 丟回安裝目錄.
  2. comment.py放到Package的User目錄里面.

第一種方法的缺點是麻煩, 而且版本升級的時候, Default.sublime-package有可能會被覆蓋.
第二種方法是正解.

解決問題

  • *.sublime-package其實是一個zip類型的文件, 可以直接解壓.

  • 找到里面的comment.py文件. 內(nèi)容如下:

def advance_to_first_non_white_space_on_line(view, pt):
    ...

def has_non_white_space_on_line(view, pt):
    ...

def build_comment_data(view, pt):
    ...

class ToggleCommentCommand(sublime_plugin.TextCommand):
    def remove_block_comment(self, view, edit, comment_data, region):
        ...

    def remove_line_comment(self, view, edit, comment_data, region):
        ...

    def is_entirely_line_commented(self, view, comment_data, region):
        ...

    def block_comment_region(self, view, edit, block_comment_data, region):
        ...

    def line_comment_region(self, view, edit, line_comment_data, region):
        ...

    def add_comment(self, view, edit, comment_data, prefer_block, region):
        ...

    def run(self, edit, block=False)
        ...

1個Command類, 3個方法.

無論是注釋, 還是反注釋. 是行注釋, 還是塊注釋.
研究代碼之后, 可知, comment_data都是由build_comment_data這個方法構(gòu)造的.
So, 修改這個函數(shù)就OK了.

def build_comment_data(view, pt):
    shell_vars = view.meta_info("shellVariables", pt)
    if not shell_vars:
        return ([], [])

    # transform the list of dicts into a single dict
    all_vars = {}
    for v in shell_vars:
        if 'name' in v and 'value' in v:
            all_vars[v['name']] = v['value']

    line_comments = []
    block_comments = []

    # transform the dict into a single array of valid comments
    suffixes = [""] + ["_" + str(i) for i in range(1, 10)]
    for suffix in suffixes:
        start = all_vars.setdefault("TM_COMMENT_START" + suffix)
        end = all_vars.setdefault("TM_COMMENT_END" + suffix)
        disable_indent = all_vars.setdefault("TM_COMMENT_DISABLE_INDENT" + suffix)

        if start and end:
            #[comment by Floyda]block_comments.append((start, end, disable_indent == 'yes'))
            block_comments.append((start.strip() + "[comment by Floyda]", end, disable_indent == 'yes'))
            block_comments.append((start.strip(), end.strip(), disable_indent == 'yes'))
        elif start:
            #[comment by Floyda]line_comments.append((start, disable_indent == 'yes'))
            line_comments.append((start.strip() + "[comment by Floyda]", disable_indent == 'yes'))
            line_comments.append((start.strip(), disable_indent == 'yes'))
    return (line_comments, block_comments)

這樣, 我注釋過的代碼, 別人即使反注釋, 也是很蛋疼的 /斜眼笑
So, 群里的朋友的問題也解決了.

最后, 把comment.py丟到Package的User目錄.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末办桨,一起剝皮案震驚了整個濱河市摧阅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盹沈,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锚贱,死亡現(xiàn)場離奇詭異,居然都是意外死亡吧碾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門呢堰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人席舍,你說我怎么就攤上這事“头啵” “怎么了粥谬?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵肛根,是天一觀的道長。 經(jīng)常有香客問我帝嗡,道長晶通,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任哟玷,我火速辦了婚禮狮辽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巢寡。我一直安慰自己喉脖,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布抑月。 她就那樣靜靜地躺著树叽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谦絮。 梳的紋絲不亂的頭發(fā)上题诵,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天洁仗,我揣著相機(jī)與錄音,去河邊找鬼性锭。 笑死赠潦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的草冈。 我是一名探鬼主播她奥,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怎棱!你這毒婦竟也來了哩俭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拳恋,失蹤者是張志新(化名)和其女友劉穎凡资,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谬运,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡讳苦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吩谦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡膝藕,死狀恐怖式廷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芭挽,我是刑警寧澤滑废,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站袜爪,受9級特大地震影響蠕趁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辛馆,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一俺陋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昙篙,春花似錦腊状、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至焚辅,卻和暖如春映屋,著一層夾襖步出監(jiān)牢的瞬間苟鸯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工棚点, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留早处,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓乙濒,卻偏偏與公主長得像陕赃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子颁股,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Sublime Text:一款具有代碼高亮么库、語法提示、自動完成且反應(yīng)快速的編輯器軟件甘有,不僅具有華麗的界面诉儒,還支持插...
    xiaotao123閱讀 9,476評論 0 27
  • Sublime Text:一款具有代碼高亮、語法提示亏掀、自動完成且反應(yīng)快速的編輯器軟件忱反,不僅具有華麗的界面,還支持插...
    追風(fēng)逸少丶閱讀 11,315評論 1 34
  • Sublime Text:一款具有代碼高亮滤愕、語法提示温算、自動完成且反應(yīng)快速的編輯器軟件,不僅具有華麗的界面间影,還支持插...
    晚晴幽草閱讀 710,869評論 149 1,114
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理注竿,服務(wù)發(fā)現(xiàn),斷路器魂贬,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 下載地址:Sublime Text 原則上收費的巩割,但可以試用,試用期是免費的付燥,在試用期間會提示你購買. packa...
    萬物皆可搬閱讀 9,641評論 2 9