Dua mode Python

10

Saya telah mencoba mengkonfigurasi Emacs untuk menggunakan mode Python yang tepat. Untuk tujuan ini saya telah membaca beberapa tutorial. Yang terpenting yang ini . Tutorial menggunakan python-modepaket. Namun, ketika saya menginstalnya melalui manajer paket ( M-x package-install RET python-mode RET) saya tidak bisa menggunakan pintasan yang tersedia untuk paket itu.

Saya membuka file Python untuk menguji beberapa cara pintas seperti C-c |, yang seharusnya mengevaluasi ekspresi yang dipilih. Namun, yang mengejutkan saya ini tidak berhasil jadi saya memutuskan untuk mencari tahu tutorial lainnya tentang topik ini. Namun, dalam mode-line saya, saya memang melihat Python, jadi ada beberapa yang python-modediaktifkan.

Di wiki emacs saya menemukan potongan berikut untuk ditambahkan ke init.elfile saya :

 (autoload 'python-mode "python-mode" "Python Mode." t)
 (add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
 (add-to-list 'interpreter-mode-alist '("python" . python-mode))

Ketika saya menambahkan ini, python-modesebenarnya berfungsi dan cara pintas yang disebutkan di atas juga berfungsi.

Saya tidak mengerti benar apa yang dilakukan lebih dari mengeksekusi secara manual M-x python-modedalam buffer file python.

Ketika saya menghapus setiap jejak python-modedi folder .emacs saya dan membuka file python saya perhatikan bahwa saya masih punya python-mode. Jadi tebakan saya ada dua python-modes?

Saya rasa saya ingin python-modedari https://launchpad.net/python-mode . Tampaknya ada dalam repositori paket, tetapi saya tidak yakin bagaimana menghapus mode Python lainnya.

Bisakah seseorang menjelaskannya?

Christophe De Troyer
sumber
1
Jika Anda ingin menggunakan Ipython, ein adalah paket yang sangat baik. Ini memberi Anda setara dengan notebook Ipython di Emacs. Demo di sini . Ada juga demo lama dari repo asli yang sekarang tidak dirawat.
Tu Do
Itu adalah keseluruhan teks untuk pertanyaan yang cukup sederhana. ;-) Akan menyenangkan untuk memangkasnya sedikit.
Malabarba
Saya setuju. Saya sedang teliti seperti situs SE lainnya memikirkan saya. Saya akan memotongnya sedikit secepatnya.
Christophe De Troyer

Jawaban:

10

Yah ya ada dua mode python: yang dikirimkan dengan emacs adalah python.eldan yang lainnya python-mode.elmemang yang ini: https://launchpad.net/python-mode

Tutorial Anda telah merujuk yang berikutnya.

python-modeCuplikan pengaturan Anda melakukan hal berikut:

;; by default, the function 'python-mode is associated with
;; the package python.el. The following changes that to python-mode.el:
(autoload 'python-mode "python-mode" "Python Mode." t)

;; open py files with python-mode
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))

;; sets python interpreter mode to be python-mode
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
Adobe
sumber
Jadi apakah saya menghapus python.el atau saya harus menggabungkannya? Atau apakah ada nama khusus untuk mode python terakhir? Saya ingin init.elperangkat portabel saya jadi menghapus python.elmungkin bukan pilihan.
Christophe De Troyer
Cukup instal python-mode.el dan atur dengan snippet yang Anda posting. (atau baca README-nya)
Adobe
Saya mengerti apa yang dilakukan perintah, dalam kombinasi dengan jawaban ini: superuser.com/questions/108233/... Terima kasih telah menjelaskan.
Christophe De Troyer
7

Sebagai pengelola python-mode.el dan selain menjawab oleh @Adobe: python-mode.el tidak membongkar perintah dari python.el - keduanya tersedia. Karena nama python-mode-map --yang digunakan oleh keduanya dan tidak dapat diubah tanpa merusak banyak hal-- pengikat kunci dan menu dikirim dari yang terakhir dimuat.

C-c |panggilan py-execute-regiondan bekerja dengan baik di sini. Mungkin python.el dimuat setelah itu dan pengikatannya hilang. Memanggil perintah melalui MX mungkin menjadi pilihan daripada. Jika ada masalah, silakan pertimbangkan laporan bug di https://bugs.launchpad.net/python-mode

Andreas Röhler
sumber