возвышенный текст 3, как выбрать разные отметки комментария? - PullRequest
0 голосов
/ 19 октября 2018

В php мы можем использовать либо #, либо // в качестве комментариев к строке, и он настроен по умолчанию в файле Comments.tmPreferences следующим образом:

<dict>
        <key>name</key>
        <string>TM_COMMENT_START</string>
        <key>value</key>
        <string>// </string>
    </dict>
    <dict>
        <key>name</key>
        <string>TM_COMMENT_START_2</string>
        <key>value</key>
        <string># </string>
    </dict>

Я нахожу документы в http://docs.sublimetext.info/en/latest/reference/comments.html, можно использовать дополнительные метки комментария к строке.Но он не говорил, как выбирать между ними.У меня вопрос: могу ли я установить отдельные привязки клавиш для каждого знака TM_COMMENT_START?И как?Это настройка карты ключей по умолчанию:

{ "keys": ["ctrl+/"], "command": "toggle_comment", "args": { "block": false } }

, аргументы которой я должен использовать, чтобы выбрать другой TM_COMMENT_START?

1 Ответ

0 голосов
/ 22 октября 2018

Глядя на Packages/Default/comment.py, можно увидеть, что в настоящее время это невозможно без внесения некоторых изменений в код, поскольку жестко задан код всегда использовать первый символ комментария блока или строки, определенный в файле tmPreferences.

Можно внести следующие изменения:

--- Shipped Packages/Default/comment.py 2018-10-11 19:11:54
+++ Packages/Default/comment.py 2018-10-22 10:54:03
@@ -168,7 +168,7 @@
         for pos in start_positions:
             view.insert(edit, pos, start)

-    def add_comment(self, view, edit, comment_data, prefer_block, region):
+    def add_comment(self, view, edit, comment_data, prefer_block, region, preferred_index):
         (line_comments, block_comments) = comment_data

         if len(line_comments) == 0 and len(block_comments) == 0:
@@ -183,19 +183,19 @@
         if region.empty():
             if prefer_block:
                 # add the block comment
-                self.block_comment_region(view, edit, block_comments[0], region)
+                self.block_comment_region(view, edit, block_comments[preferred_index], region)
             else:
                 # comment out the line
-                self.line_comment_region(view, edit, line_comments[0], region)
+                self.line_comment_region(view, edit, line_comments[preferred_index], region)
         else:
             if prefer_block:
                 # add the block comment
-                self.block_comment_region(view, edit, block_comments[0], region)
+                self.block_comment_region(view, edit, block_comments[preferred_index], region)
             else:
                 # add a line comment to each line
-                self.line_comment_region(view, edit, line_comments[0], region)
-
-    def run(self, edit, block=False):
+                self.line_comment_region(view, edit, line_comments[preferred_index], region)
+
+    def run(self, edit, block=False, preferred_index=0):
         for region in self.view.sel():
             comment_data = build_comment_data(self.view, region.begin())
             if (region.end() != self.view.size() and
@@ -222,8 +222,8 @@
                 if self.remove_block_comment(self.view, edit, comment_data, line):
                     continue

-                self.add_comment(self.view, edit, comment_data, block, line)
+                self.add_comment(self.view, edit, comment_data, block, line, preferred_index)
                 continue

             # Add a comment instead
-            self.add_comment(self.view, edit, comment_data, block, region)
+            self.add_comment(self.view, edit, comment_data, block, region, preferred_index)

, а затем можно изменить аргументы, отправленные с привязки клавиш, чтобы включить новый параметр preferred_index, установленный в 1 (для представления #), когдаработая в контексте PHP:

{ "keys": ["ctrl+/"], "command": "toggle_comment", "args": { "block": false, "preferred_index": 1 }, "context":
    [
        { "key": "selector", "operator": "equal", "operand": "source.php", "match_all": true },
    ],
}
...