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, elpy
paket bu özelliğe sahiptir (diğer birçok kullanışlı IDE özelliğine ek olarak ). Bununla birlikte, elpy-goto-definition
noktayı 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ı elpy
gö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-definition
yapmak 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 elpy
sizi 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, rgrep
sonuç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 elpy
uygulamayı 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-definition
ve 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-symbol
elpy-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-mode
Emacs varsayılan olarak sahip değildir . ( stackoverflow.com/questions/11363089/… )