realgud pdb com .dir-locals.el

Nov 10 2020

Estou tentando usar variáveis ​​locais de diretório para que minha realgud:pdbinvocação possa ser:

Run pdb (like this): /home/username/work/place/environments/default/bin/python -m pdb /home/username/work/place/scratch.py

Em vez de :

Run pdb (like this): python -m pdb /home/username/work/place/scratch.py

como sugerido aqui .

No entanto, a fim de transformar a sugestão em compatível com .dir-locals.el, entendo que preciso usar nil e eval para esta resposta .

Então, fico com isso:

;; .dir-locals.el
;; set the test runner
((nil . ((eval . (add-hook 'python-mode-hook
  (function (lambda ()
              (let* ((conda-python (format "%/envs/default/bin/python -m pdb" (projectile-project-root))))
                (setq-local realgud:pdb-command-name conda-python))
              )))
         ))
      ))

Isso não reclama ou falha, exceto para me perguntar se eu confio nos parâmetros eval. No entanto, parece não funcionar, pois minha M-x realgud:pdbinvocação ainda é:

Run pdb (like this): python -m pdb /home/username/work/place/scratch.py

Meu init.elcontém:

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(column-number-mode t)
 '(conda-anaconda-home (expand-file-name "~/anaconda3"))
 '(elpy-test-pytest-runner-command '("py.test"))
 '(elpy-test-runner 'elpy-test-pytest-runner)

... que eu não acho que interfira, mas inclua para ser completo.

O que devo alterar para que .dir-local.elescolha o executor de teste correto para PDB? Essencialmente, estou tentando combinar a sugestão da resposta vinculada para modificar o meu init.el, mas em uma base por diretório, usando .dir-locals.el, pois meus projetos têm nomes de ambiente diferentes e estou preso tendo um por projeto.

Respostas

1 f-sasa Nov 12 2020 at 13:12

Eu tentei em vez de definir um gancho, apenas avaliar a variável com a python-modeassociação e parece funcionar bem, aqui está o código:

((python-mode . ((eval .
           (setq-local realgud:pdb-command-name (concat
                             (projectile-project-root)
                             "envs/default/bin/python -m pdb"))))))