Выделение конечных пробелов в Textmate для Python?

Я хотел бы сделать что-то вроде this Textmate tip, так что конечные пробелы всегда выделяются каким-то образом, когда я что-то кодирую в Python - это облегчает его исправление немедленно, и другие редакторы, такие как Emacs, могут это сделать.

К сожалению, обсуждение после этой публикации, похоже, затрудняет ее выполнение. Для меня селектор области invalid.trailing-whitespace даже не отображается в настройках после этого совета. Кто-нибудь еще имел успех с этим?

Ответ 1

Этот код работает (но не с комментариями):

{   scopeName = 'source.whitespace';
    patterns = (
        {  name = 'source.invalid.trailing-whitespace';
            match = '(\s+)$';
            captures = { 1 = { name = 'invalid.trailing-whitespace'; }; };
         },
    );
}

PS: Я изменил "источник" на "source.whitespace"

Для изменения комментариев в грамматике Python:

{  name = 'comment.line.number-sign.python';
   match = '(#).*$\n?';
   captures = { 1 = { name = 'punctuation.definition.comment.python'; }; };
},

В:

{  name = 'comment.line.number-sign.python';
   match = '(#).*?(\s*)$\n?';
   captures = { 
     1 = { name = 'punctuation.definition.comment.python'; }; 
     2 = { name = 'invalid.trailing-whitespace';  }; 
   };
},

Вам нужно добавить "include" в определении языка Python, где:

:
patterns = (
 {    name = 'comment.line.number-sign.python';
:

Включается:

:
patterns = (
 {  include = 'source.whitespace'; },
 {    name = 'comment.line.number-sign.python';
:

Ответ 2

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

Связки → Текст → Преобразование/Удаление → Удаление конечных пробелов в документе

Кроме того, поскольку textmate имеет привязки emacs, вы можете сделать это так же, как и в emacs.