Como alternar comentários na coluna 1 do Sublime Text 3

0

Em Sublime Text 3, Edit->Comment->Toggle Comment (comando - / em um Mac) irá comentar a seleção atual (ou linha atual), ou descomente-lo, dependendo em seu estado atual. Ele faz isso inserindo um espaço e o caractere inicial do comentário no início da linha atual, na coluna em que a linha atual começa, preservando o espaço em branco inicial. Por exemplo, comentando a quarta linha disso:

#***************************************************************************
sub invoke
{
    my($self) = @_;

resultaria nisso:

#***************************************************************************
sub invoke
{
    # my($self) = @_;

Eu realmente adoraria se justificasse à esquerda o caractere de comentário, assim:

#***************************************************************************
sub invoke
{
#   my($self) = @_;

Existe uma maneira de fazer isso? Obrigado!

    
por Joe Casadonte 31.10.2015 / 04:30

1 resposta

2

Aviso:

Isso envolve mexer com um dos arquivos principais do Sublime. Não continue se estiver desconfortável com isso.

Dito isto, as mudanças que você vai fazer não são tão drásticas, e são facilmente reversíveis. Não se preocupe, vou facilitar as coisas.

A primeira coisa que você precisa fazer é instalar o Package Control se ainda não o fez. Em seguida, instale PackageResourceViewer . Abra a Paleta de Comandos, digite prv para exibir as opções PackageResourceViewer: e escolha PackageResourceViewer: Open Resource . Role um pouco para baixo, selecione Default , role um pouco mais e selecione comment.py para abrir o arquivo no Sublime. Agora você pode clicar em Esc para fechar a Paleta de Comandos. As duas primeiras definições de funções são assim:

import sublime, sublime_plugin

def advance_to_first_non_white_space_on_line(view, pt):
    while True:
        c = view.substr(pt)
        if c == " " or c == "\t":
            pt += 1
        else:
            break

    return pt

def has_non_white_space_on_line(view, pt):
    while True:
        c = view.substr(pt)
        if c == " " or c == "\t":
            pt += 1
        else:
            return c != "\n"

Primeiro, comente todas as linhas de advance_to_first_non_white_space_on_line() , exceto a declaração final return :

def advance_to_first_non_white_space_on_line(view, pt):
    # while True:
    #     c = view.substr(pt)
    #     if c == " " or c == "\t":
    #         pt += 1
    #     else:
    #         break

    return pt

Continuando para has_non_white_space_on_line() , comente todas as linhas:

def has_non_white_space_on_line(view, pt):
    # while True:
    #     c = view.substr(pt)
    #     if c == " " or c == "\t":
    #         pt += 1
    #     else:
    #         return c != "\n"

Em seguida, crie uma nova linha após a instrução return , indente 4 espaços e cole o seguinte:

return view.substr(pt) != "\n"

fazendo a coisa toda parecer assim:

def has_non_white_space_on_line(view, pt):
    # while True:
    #     c = view.substr(pt)
    #     if c == " " or c == "\t":
    #         pt += 1
    #     else:
    #         return c != "\n"
    return view.substr(pt) != "\n"

E é isso! Salve o arquivo e, apenas por diversão, tente comentar algumas linhas nele - você verá todos os caracteres de comentário # na coluna 1.

Agora, isso obviamente mudará o comportamento de todas linguagens, não apenas do Python, então esteja preparado para isso. Para desfazer as alterações, basta substituir as duas definições de funções pelas do primeiro bloco de código acima. Ah, para chegar ao arquivo novamente, você não precisa passar pelo PackageResourceViewer. Em vez disso, selecione Preferences -> Browse Packages... (ou Sublime Text -> Preferences -> Browse Packages... se estiver no OS X) para abrir a pasta Packages no gerenciador de arquivos do sistema operacional (Windows Explorer, Finder, Nautilus, etc.). Em Packages/Default , você encontrará comment.py , assim como você alterou. Se você quiser voltar ao estado original, basta excluir esse arquivo e tudo estará pronto (o original será armazenado em outro local, mas será substituído quando houver um arquivo com nome idêntico em Packages ).

Se você é realmente aventureiro, pode clonar o arquivo, renomeá-lo e modificá-lo para incluir lógica apenas para recuar assim com determinados idiomas, mas isso está além do escopo desta resposta. Pergunte sobre o estouro de pilha se você quiser saber como fazer isso.

    
por 01.11.2015 / 05:29