realgud pdb con .dir-locals.el

Nov 10 2020

Sto cercando di utilizzare le variabili locali della directory in modo che la mia realgud:pdbchiamata possa essere:

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

Invece di :

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

come suggerito qui .

Tuttavia, per trasformare il suggerimento in modo che sia compatibile con .dir-locals.el, capisco che devo usare nil ed eval per questa risposta .

Quindi mi rimane questo:

;; .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))
              )))
         ))
      ))

Questo non si lamenta o fallisce, tranne per chiedermi se mi fido dei parametri eval. Tuttavia, non sembra funzionare, poiché la mia M-x realgud:pdbinvocazione è ancora:

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

Il mio init.elcontiene:

(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)

... che non credo interferisca ma includa per completezza.

Cosa dovrei cambiare in modo che il mio .dir-local.elprenda il test runner corretto per pdb? In sostanza, sto cercando di combinare il suggerimento della risposta collegata per modificare il mio init.el, ma in base alla directory, utilizzando .dir-locals.el, poiché i miei progetti hanno nomi di ambiente diversi e sono bloccato ad averne uno per progetto.

Risposte

1 f-sasa Nov 12 2020 at 13:12

Ho provato invece di impostare un hook, solo eval la variabile con l' python-modeassociazione e sembra funzionare bene, ecco il codice:

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