Recuo do Emacs usando Tabs

8

Existe uma maneira de fazer o código de recuo do Emacs usando apenas guias globalmente e não espaços. Eu sei do comando tabify. Eu preferiria que o recuo automatizado usasse guias em vez de uma mistura de guias e espaços como a configuração padrão.

    
por lorefnon 06.10.2011 / 07:04

3 respostas

7

Bem, para recuar com guias, você deve garantir que indent-tabs-mode seja t (que é o valor padrão). Mas, para obter apenas as guias , você precisa ajustar o modo que está fazendo o recuo, de modo que cada linha seja recuada por um múltiplo do seu tab-width (padrão 8). Por exemplo, no modo C, você pode tentar definir c-basic-offset para 8.

Ou você pode reduzir seu tab-width para um valor menor, para que o Emacs não precise usar espaços para alcançar cada nível de recuo. Mas se você fizer isso, todo mundo que tiver que trabalhar em seu código (e usar as paradas de tabulação padrão de 8 caracteres) ficará irritado.

Eu recomendo que você reconsidere. Pessoalmente, acho que trabalhar no código recuado com abas para ser chato, especialmente se eles não parecem ser 8 guias de espaço. (O pior é o código em que algumas linhas usam espaços, algumas linhas usam guias e claramente não há 8 guias de espaço.) Faça-nos um favor e apenas (setq indent-tabs-mode nil) .

    
por 06.10.2011 / 09:31
7

O Emacs vem com vários estilos predefinidos para recuo de C, ou você pode escreva o seu próprio se nenhum se adequar às suas necessidades. Entre os estilos padrão , parece que você ' está procurando linux (o estilo usado na origem do kernel do Linux), que possui recuos de 8 colunas e usa caracteres de tabulação de largura 8.

Você pode tornar essas configurações seu estilo padrão para C, colocando isso em .emacs :

(setq c-default-style "linux")
(defun my-c-mode-hook ()
  (setq indent-tabs-mode t)
  (setq tab-width 8))
(add-hook 'c-mode-hook 'my-c-mode-hook)

Certifique-se de não usar essas configurações ao colaborar com outras pessoas com diferentes preferências. Em particular, usar abas fará você se otar. Se um arquivo específico deve ser mantido em um estilo específico, você pode usar variáveis de arquivo para garantir que todos que editarem o arquivo no Emacs usem as mesmas configurações:

/*
 * Local Variables:
 * c-file-style: "linux"
 * indent-tabs-mode: t
 * tab-width: 8
 * End:
 */

Se você tiver um projeto inteiro com arquivos C com recuo semelhante, use variáveis de diretório em vez de poluir todos os arquivos. Crie um arquivo chamado .dir-locals.el com conteúdo como o seguinte:

((c-mode . ((c-file-style . "linux")
            (indent-tabs-mode . t)
            (tab-width . 8))))
    
por 07.10.2011 / 01:26
1

As abas me irritam, mas eu tive que descobrir como fazer o emacs usar apenas abas para recuar, para que eu pudesse trabalhar no código de outra pessoa. Veja o que funcionou para mim:

(defun tmp/change-indent ()
  (interactive)
  (setq indent-tabs-mode t)
  (setq tab-width 2))

Eu percebi que, antes de mexer com qualquer coisa, quando eu pressionava a tecla tab, ela era automaticamente recuada por duas colunas. A definição de "tab-width" para coincidir com o deslocamento de 2 colunas permitiu que o emacs usasse guias ao fazer o formato automático. Eu estava trabalhando no modo nxml, mas acho que isso deve funcionar para qualquer modo.

    
por 30.04.2013 / 19:59

Tags