Como posso definir um nome de buffer do Emacs usando variáveis locais de arquivo?

1

Eu tenho uma estrutura de diretórios na qual eu tenho <project>/worksheet.tex . Quando eu abro cada planilha, recebo um worksheet<n> não-descritivo como o nome do buffer.

Gostaria de salvar os nomes dos buffers como variáveis locais de arquivo. Algo como talvez:

;; (to be safe if "specific project" already exists as a buffer)
buffer-name: (generate-new-buffer-name "specific project")

Como isso pode ser implementado sem usar o eval file-local 'variable'?

    
por Sean Allred 13.12.2013 / 21:14

2 respostas

1

(atualização) aqui está uma solução com uma variável de arquivo local:

nos seus arquivos:

;; -*- preferred-buffer-name: "purtsl"; -*-

em .emacs:

(defun change-buffer-name ()
  (if (boundp 'preferred-buffer-name)
      (rename-buffer preferred-buffer-name)))

(add-hook 'find-file-hook 'change-buffer-name t)

você pode ter que personalizar valores de variáveis locais seguras e / ou ativar variáveis locais , dependendo de quantos projetos você tem, considerações de segurança e como é chato para você responder a pergunta de segurança ..

e aqui está uma abordagem diferente. ele verifica o nome do diretório que o contém e depois muda o nome do buffer para / WS:

(defun find-file-custom (filename)
  "open filename and set buffer name to <project>/WS"
  (interactive "F")
  (find-file filename)
  (rename-buffer (concat "<" (file-name-nondirectory
                       (directory-file-name
                        (file-name-directory (buffer-file-name)))) ">/WS")))
    
por 17.12.2013 / 09:26
0

Até onde eu sei, você não pode fazer o que quiser usando variáveis locais de arquivo sem a variável% pseudo eval: .

No entanto, a biblioteca uniquify (que é padrão) deve atender às suas necessidades. Basta colocar algo como o seguinte no seu arquivo init:

(require 'uniquify)

Você também pode personalizar as variáveis uniquify-buffer-name-style e uniquify-separator para adequar uniquify às suas necessidades. Eu pessoalmente gosto dessas configurações mais do que os padrões:

(setq
 uniquify-buffer-name-style 'post-forward
 uniquify-separator         ":")
    
por 13.12.2013 / 22:48

Tags