Bahsettiğiniz PyCharm'ın özelliği benim favorilerimden biriydi ve PyCharm'i tamamen Emacs ile değiştirmeye çalışırken aradığım ilk şeylerden biriydi.
Başka bir cevapta da belirtildiği gibi, elpypaket bu özelliğe sahiptir (diğer birçok kullanışlı IDE özelliğine ek olarak ). Bununla birlikte, elpy-goto-definitionnoktayı sembolüne bakmak için kullanırsanız , er ya da geç, PyCharm'ın aradığınızı bulmada başarılı olacağı bazı durumlarda, bulamayacağınızı elpygöreceksiniz. Doktorların dediği gibi:
arka uçlar, ne tür bir sembolün noktada olduğunu her zaman tanımlayamaz. Özellikle birkaç indirmeden sonra, temelde doğru tahmin etme umuduna sahip değillerdir,
Bu durumda, çağrı elpy-goto-definitionyapmak hiçbir şey yapmaz ve yankı alanında küçük bir hata mesajı gösterir. Bu olduğunda elbette aradığınızı bulmak istersiniz ve elpysizi asılı bırakmaz. Bu tür bir durumda , içinde bulunduğum projedeki noktayı sembol yapmak için her zaman C-c C-s( elpy-rgrep-symbol) kullanırım rgrep. En azından benim için aradığım şey, rgrepsonuçlarda her zaman ortaya çıkar. Aslında, bunun PyCharm'ın yaptığıyla da benzer olduğunu düşünüyorum: bir şeyin tanımına bakmaya çalışırsanız ve PyCharm nerede tanımlandığından emin değilse, listeden seçmenizi sağlayacaktır. Aslında elpyuygulamayı tercih ediyorum , çünkü ilk seçeneğe giderken kaybolan geçici bir liste yerine,elpy-rgrep-symbol olasılıklar listesini başka bir tamponda açık bırakacak, böylece gerektiğinde bunlar arasında ileri geri gidebilirsiniz.
İş akışım neredeyse her zaman ilk çağrı yapmak elpy-goto-definitionve başarısız olursa, çağrı yapmak olduğundan, başarısız olursa otomatik olarak elpy-rgrep-symbolçağıran basit bir işlevi bir araya getirmeye karar verdim . Bu fonksiyon aşağıdadır:elpy-rgrep-symbolelpy-goto-definition
(defun goto-def-or-rgrep ()
"Go to definition of thing at point or do an rgrep in project if that fails"
(interactive)
(condition-case nil (elpy-goto-definition)
(error (elpy-rgrep-symbol (thing-at-point 'symbol)))))
Sonra bunu bağladım M-.(varsayılan bağlama için elpy-goto-definition).
(define-key elpy-mode-map (kbd "M-.") 'goto-def-or-rgrep)
Bu şekilde, en sevdiğim PyCharm özelliklerinden birini favori editörümde kullanabilirim. Bunun eski bir soru olduğunu biliyorum ve bu sorunu çözmüş ya da çoktan çözmüş olabilirsiniz, ancak umarım siz ya da başkası bunu yararlı bulur!
python-modeEmacs varsayılan olarak sahip değildir . ( stackoverflow.com/questions/11363089/… )