realgud pdb dengan .dir-local.el

Nov 10 2020

Saya mencoba menggunakan variabel lokal direktori sehingga realgud:pdbpemanggilan saya bisa:

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

Dari pada :

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

seperti yang disarankan di sini .

Namun, untuk mengubah saran di sana agar kompatibel .dir-locals.el, saya mengerti bahwa saya perlu menggunakan nil dan eval untuk jawaban ini .

Jadi saya dibiarkan dengan ini:

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

Ini tidak mengeluh atau gagal, kecuali untuk menanyakan saya apakah saya mempercayai parameter eval. Namun, tampaknya tidak berhasil, karena M-x realgud:pdbpermintaan saya masih:

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

init.elIsi saya :

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

... yang menurut saya tidak mengganggu tetapi termasuk untuk kelengkapan.

Apa yang harus saya ubah agar saya .dir-local.elmemilih runner tes yang benar untuk pdb? Pada dasarnya, saya mencoba menggabungkan saran dari jawaban terkait untuk memodifikasi saya init.el, tetapi dalam basis per direktori, menggunakan .dir-locals.el, karena proyek saya memiliki nama lingkungan yang berbeda dan saya terjebak memiliki satu per proyek.

Jawaban

1 f-sasa Nov 12 2020 at 13:12

Saya mencoba alih-alih mengatur pengait, cukup evaluasi variabel dengan python-modeasosiasi dan tampaknya berfungsi dengan baik, berikut kodenya:

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