realgud pdb กับ. dir-local.el

Nov 10 2020

ฉันกำลังพยายามใช้ตัวแปรโลคัลไดเร็กทอรีเพื่อให้realgud:pdbการเรียกของฉันสามารถ:

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

แทน :

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

เป็นข้อเสนอแนะที่นี่

อย่างไรก็ตามเพื่อที่จะเปลี่ยนคำแนะนำที่นั่นให้เข้ากันได้.dir-locals.elฉันเข้าใจว่าฉันต้องใช้ศูนย์และประเมินตามคำตอบนี้

ดังนั้นฉันจึงเหลือสิ่งนี้:

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

สิ่งนี้ไม่ได้บ่นหรือล้มเหลวยกเว้นการถามว่าฉันเชื่อถือพารามิเตอร์ eval หรือไม่ อย่างไรก็ตามดูเหมือนว่าจะไม่ได้ผลเนื่องจากM-x realgud:pdbคำขอร้องของฉันยังอยู่:

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

ของฉันinit.elประกอบด้วย:

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

... ซึ่งฉันไม่คิดว่าจะรบกวน แต่รวมไว้เพื่อความสมบูรณ์

ฉันควรเปลี่ยนอะไรเพื่อให้ฉัน.dir-local.elเลือกนักวิ่งทดสอบที่ถูกต้องสำหรับ pdb โดยพื้นฐานแล้วฉันพยายามรวมคำแนะนำของคำตอบที่เชื่อมโยงเพื่อแก้ไขของฉันinit.elแต่ในแต่ละไดเรกทอรีโดยใช้.dir-locals.elเนื่องจากโครงการของฉันมีชื่อสภาพแวดล้อมที่แตกต่างกันและฉันติดอยู่ที่มีหนึ่งรายการต่อโครงการ

คำตอบ

1 f-sasa Nov 12 2020 at 13:12

ฉันลองแทนที่จะตั้งค่า hook เพียงแค่ประเมินตัวแปรด้วยการpython-modeเชื่อมโยงและดูเหมือนว่าจะทำงานได้ดีนี่คือรหัส:

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