Sublime Texto 2: Mostrar Nome do Escopo do Documento Atual

TL; DR

No console ST2, execute:

print(view.syntax_name(view.sel()[0].begin()))

The Whole Enchelada

Os snippets no Sublime Text 2 (ou em qualquer editor de texto, na verdade) são incríveis, especialmente porque você pode limitar o escopo no qual deseja que o snippet seja utilizável / acionável por tabulação.

Embora eu sempre tenha adorado a ideia de limitar o escopo dos meus snippets acionados por tab, nem sempre foi tão prático para mim, já que não mantenho exatamente um depósito mental dos nomes de escopo reais dos diferentes formatos de arquivo Eu uso, e os nomes de escopo nem sempre podem ser facilmente inferidos por seus respectivos formatos de arquivo (ou seja, “text.html” versus “source.css”). Não apenas isso, mas o Google surpreendentemente apresentou resultados muito esparsos e nada diretos, tanto quanto uma referência online de fácil digestão. Você pode procurar nos arquivos de definição de sintaxe do ST2 para encontrar o nome do escopo correspondente, mas isso é obviamente muito menos do que o ideal.

Eu me deparei com um comando para o console ST2 que produz convenientemente o nome do escopo da guia atualmente selecionada e transformei-o em um trecho. Você pode usá-lo como está, o que simplesmente renderiza um conjunto de “instruções” (se você pode chamá-los assim) para onde quer que você digite o gatilho da guia do snippet, ou você pode simplesmente puxar o próprio comando. Em sua encarnação atual, ele será renderizado com o próprio comando destacado para fácil cópia e colagem no console.

Sem mais delongas:

<snippet>
<content><![CDATA[

1. View > Show Console (^`)

2. ${1:print(view.syntax_name(view.sel()[0].begin()))}


]]>
</content>
<description>Display console command for showing scope name of current document</description>
<tabTrigger>showscope</tabTrigger>
</snippet>

Feliz trecho!