Desconforto com a indentação do Zed e a melancolia dos metacaracteres

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

Image
Olá, sou um inútil.
Como sou o tipo de pessoa que gosta de usar coisas padrão de forma padrão, não quero bagunçar meu .vimrc com configurações. Isso torna o recurso de Auto Indent para outras linguagens bastante difícil, então comecei a usar o Zed recentemente, mas é um tanto estranho.

O que será...?

De alguma forma, o mundo que vejo quando abro com zeditor é muito diferente. Senti-me mal e decidi investigar.

Olhando com cat -A...

$ cat -A main.go 
package main$
$
import ($
^I"fmt"$
^I"net/http"$
^I"os"$
$
^I"golang.org/x/net/html"$
)$
$
func fetchOGP(url string) (siteName string, title string, err error) {$
^Iresp, err := http.Get(url)$
^Iif err != nil {$
^I^Ireturn "", "", fmt.Errorf("failed to fetch OGP URL: %w", err)$
^I}$
^Idefer resp.Body.Close()$
$
^Idoc, err := html.Parse(resp.Body)$
^Iif err != nil {$
^I^Ireturn "", "", fmt.Errorf("failed to parse HTML: %w", err)$
^I}$
$
^Ivar findOGP func(*html.Node)$
^IfindOGP = func(n *html.Node) {$
^I^Iif n.Type == html.ElementNode && n.Data == "meta" {$
^I^I^Ivar property, content string$
^I^I^Ifor _, attr := range n.Attr {$
^I^I^I^Iif attr.Key == "property" {$
^I^I^I^I^Iproperty = attr.Val$
^I^I^I^I} else if attr.Key == "content" {$
^I^I^I^I^Icontent = attr.Val$
^I^I^I^I}$
^I^I^I}$

Hã...?

Não havia nada que eu pudesse fazer, mas consegui, mas...

Vou substituir uma vez e salvar novamente com o Zed. Com isso, substituindo uma vez...

sed "s/\t/  /g"

Então, salvei com o Zed e tentei cat -A novamente...

$ cat -A main.go 
package main$
$
import ($
^I"fmt"$
^I"net/http"$
^I"os"$
$
^I"golang.org/x/net/html"$
)$
$
func fetchOGP(url string) (siteName string, title string, err error) {$
^Iresp, err := http.Get(url)$
^Iif err != nil {$
^I^Ireturn "", "", fmt.Errorf("failed to fetch OGP URL: %w", err)$
^I}$
^Idefer resp.Body.Close()$
$
^Idoc, err := html.Parse(resp.Body)$
^Iif err != nil {$
^I^Ireturn "", "", fmt.Errorf("failed to parse HTML: %w", err)$
^I}$
$
^Ivar findOGP func(*html.Node)$

Aaaaaaaahhhhhhh!
Não consigo escapar...

Se você realmente quer usar indentação de 2 espaços

Parece que fazer :%s/\t/ /g no modo vim do Zed e depois :wq não tem efeito.

Será que a única opção é usar sed -i "s/\t/ /g toda vez, ou fazer um fork e recompilar para uso pessoal...?
Para sua informação,
Indentation conversion #4291
Existe uma issue aberta para conversão.
E, depois de substituir todos os caracteres de tabulação com sed, o ~/.config/zed/settings.json deve ser

  "useTabs": false,
  "hard_tabs": false,

Configurando assim, é possível escapar, por enquanto.
No entanto, o import, onde o formatador entra em ação, parece sempre se tornar tabulação.

Espera? E a minha natureza original de querer usar coisas padrão de forma padrão?

Pensei nisso, mas go fmt parece arrumar a indentação, e isso automaticamente se torna indentação por tabulação.
Se é o que é recomendado por padrão, será que usar indentação de 2 espaços é a maior tolice?

....
Comecei a não me importar mais com isso...
Até a próxima.
Obrigado pela atenção.

Related Posts