Menggunakan Emacs sebagai IDE

169

Saat ini alur kerja saya dengan Emacs ketika saya coding di C atau C ++ melibatkan tiga jendela. Yang terbesar di sebelah kanan berisi file yang saya kerjakan. Bagian kiri dibagi menjadi dua, bagian bawah menjadi sebuah shell yang saya gunakan untuk mengetikkan kompilasi atau membuat perintah, dan bagian atas sering berupa semacam dokumentasi atau file README yang ingin saya konsultasikan ketika saya sedang bekerja. Sekarang saya tahu ada beberapa pengguna Emacs yang cukup ahli di luar sana, dan saya ingin tahu apa yang secara fungsional berguna bagi Emacs jika tujuannya adalah menggunakannya sebagai IDE yang lengkap. Secara khusus, sebagian besar IDE biasanya memenuhi fungsi-fungsi ini adalah beberapa bentuk:

  • Editor kode sumber
  • Penyusun
  • Debugging
  • Pencarian Dokumentasi
  • Kontrol Versi
  • Fitur OO seperti pencarian kelas dan inspektur objek

Untuk beberapa di antaranya, cukup jelas bagaimana Emacs dapat memenuhi fungsi-fungsi ini, tetapi bagaimana dengan sisanya? Juga, jika bahasa tertentu harus difokuskan, saya akan mengatakan itu harus C ++.

Sunting: Satu pengguna menunjukkan bahwa saya seharusnya lebih spesifik ketika saya mengatakan 'bagaimana dengan yang lain'. Sebagian besar saya ingin tahu tentang kontrol versi yang efisien, serta pencarian dokumentasi. Misalnya, dalam SLIME cukup mudah untuk melakukan pencarian hyperspec cepat pada fungsi Lisp. Apakah ada cara cepat untuk mencari sesuatu dalam dokumentasi C ++ STL (jika saya lupa sintaks yang tepat dari hash_map , misalnya)?

pengguna7545
sumber
5
Pertanyaan dan semua jawaban sama sekali tidak ada pada poin IDE utama. Tapi pertama-tama jangan salah paham: Saya pikir tidak ada satu pun IDE di luar sana (selain beberapa Lisp / Skema langka) yang mendekati apa yang dapat ditawarkan oleh Emacs. NAMUN IDE modern melakukan hal-hal seperti ini: penyorotan instan kemungkinan kesalahan pengkodean (bahkan pada AST parsial yang tidak dapat dikompilasi). IntelliJ IDEA melakukannya: jika Anda menggunakan, katakanlah, @NotNull itu akan memperingatkan Anda, secara waktu nyata, tentang kemungkinan pelanggaran. Lalu ada keseluruhan "pengkodean dengan niat" : itu hanya tidak berfungsi (belum) di bawah Emacs.
SyntaxT3rr0r
18
Area lain di mana IDE yang baik dapat benar-benar bersinar: penyelesaian kode kontekstual (sekali lagi, bahkan pada file sumber yang tidak memihak dan tidak dapat dikompilasi). Penyelesaian kode kontekstual p0wns hippie-expand setiap hari seperti itu bahkan tidak lucu: itu hanya membuat malu Emacs. Sekali lagi saya sangat sedih bahwa IDE "editor teks" adalah sampah yang murah, lumpuh, bodoh, dan menyedihkan jika dibandingkan dengan Emacs. Tetapi IDE yang bagus bersinar di banyak bidang (seperti refactoring, penyelesaian kode kontekstual, peringatan waktu nyata, dll.) Di mana Emacs pada dasarnya tidak ada di mana pun. Beri aku Emacs di tengah-tengah IDE saya yang mengatakan. Saya merindukan hari itu.
SyntaxT3rr0r
Bagaimana dengan kode collapsing?
AlwaysLearning
Saya harus mengatakan, komentar di sini mungkin tidak ditulis oleh programmer. Saya membaca bagaimana Emacs tidak bisa dan tidak bisa itu, tetapi IDE lain bisa. Bagi saya terdengar seperti ini: seorang programmer, orang yang memecahkan masalah menggunakan bahasa pemrograman; memiliki masalah bahwa beberapa program tidak memiliki fitur dan oleh karena itu lebih buruk, tetapi mereka tidak ingin membuat fitur itu. Seperti, orang-orang, kenapa kau menjadi programmer sejak awal ?? !!
red777
@ SyntaxT3rr0r kami memiliki semantik untuk penyelesaian kode sensitif konteks.
Vasantha Ganesh K

Jawaban:

76

Anda harus spesifik tentang apa yang Anda maksud dengan "sisanya". Kecuali untuk pemeriksa objek (yang saya sadari), emacs melakukan semua hal di atas dengan mudah:

  • editor (jelas)
  • compiler - jalankan M-x compiledan masukkan perintah kompilasi Anda. Dari sana, Anda bisa saja M-x compiledan menggunakan default. Emacs akan menangkap kesalahan kompiler C / C ++ (berfungsi terbaik dengan GCC) dan membantu Anda menavigasi ke baris dengan peringatan atau kesalahan.
  • Debugging - sama, ketika Anda ingin men-debug, ketik M-x gdbdan itu akan membuat buffer gdb dengan binding khusus
  • Pencarian Dokumentasi - emacs memiliki ikatan CScope yang sangat baik untuk navigasi kode. Untuk dokumentasi lain: Emacs juga memiliki pembaca manual, dan untuk semua yang lain, ada web dan buku.
  • kontrol versi - ada banyak ikatan Emacs untuk berbagai backend VCS (CVS, SCCS, RCS, SVN, GIT semuanya terlintas dalam pikiran)

Sunting: Saya menyadari jawaban saya tentang pencarian dokumentasi benar-benar berkaitan dengan navigasi kode. Berikut ini beberapa informasi penting:

Pencarian Google tidak diragukan lagi akan mengungkapkan contoh lebih lanjut.

Seperti yang ditunjukkan oleh tautan kedua, mencari fungsi (dan apa pun) dalam dokumentasi lain dapat dilakukan, meskipun tidak didukung di luar kotak.

Ben Collins
sumber
3
bukankah seharusnya itu "kompilasi Mx"?
Svante
1
Saya pikir GNU global lebih unggul daripada CScope hari ini: gnu.org/software/global
Jürgen Hötzel
@ Jürgen Hötzel: Saya belum pernah menggunakan Emacs secara aktif. Pada saat itu, saya menggunakan GNU global dalam hubungannya dengan CScope, IIRC. Saya tidak akan terkejut jika global memiliki CS-out yang berkembang.
Ben Collins
juga meminta dukungan, dengan <a href=" p4el.sourceforge.net/p4.el.html"> p4.el </ a >
forksandhope
29

Saya harus merekomendasikan Emacs Code Browser sebagai lingkungan gaya IDE yang lebih "tradisional" untuk emacs.

EDIT : Saya juga sekarang merekomendasikan Magit lebih tinggi dari antarmuka VCS standar di emacs.

baudtack
sumber
Anda hanya dapat mengedit posting, Anda tampaknya memiliki cukup rep iirc.
baudtack
19

Alih-alih menjalankan perintah make di jendela shell, sudahkah Anda mencoba kompilasi Mx? Ini akan menjalankan perintah make Anda, menampilkan kesalahan, dan dalam banyak kasus membuatnya sangat mudah untuk melompat ke baris kode yang menyebabkan kesalahan jika output menyertakan nama file dan nomor baris.

Jika Anda penggemar IDE, Anda mungkin juga ingin melihat paket speedbar emacs (Mx speedbar). Dan, jika Anda belum melakukannya, pelajari tentang cara menggunakan tabel tag untuk menavigasi kode Anda.

Bryan Oakley
sumber
15

Ada sudut-sudut emacs yang pernah ditemukan membuat Anda lebih produktif dengan cara yang tidak pernah Anda pikirkan. Seperti yang disebutkan orang lain, menggunakan tag adalah cara yang fantastis dan cepat untuk memperbesar kode sumber Anda dan menggunakan M- / (dabbrev-expand) sering kali melakukan apa yang Anda harapkan saat mengisi nama variabel.

Menggunakan kejadian berguna untuk mendapatkan buffer dengan semua kejadian ekspresi reguler dalam buffer. Itu sangat berguna ketika refactoring kode dan mencari fragmen kode atau penggunaan variabel, atau jika Anda menggunakan penanda TODO dalam file sumber Anda dan Anda ingin mengunjungi semuanya.

fungsi flush-lines, sort-numeric-field, replace-regexp dan rectangle bisa sangat berguna untuk mengambil dump dari beberapa alat dan mengonversinya menjadi data yang berguna seperti program elisp atau spreadsheet yang dibatasi koma.

Saya menulis halaman tentang IDE seperti hal-hal yang dapat Anda lakukan dengan emacs

http://justinsboringpage.blogspot.com/2007/09/11-visual-studio-tricks-in-emacs.html

Mempelajari elisp adalah cara hebat lainnya untuk menjawab bagi diri Anda sendiri apa lagi yang dapat dilakukan emacs di luar apa yang dapat dilakukan oleh IDE biasa.

Misalnya saya telah membuat blog tentang menulis fungsi pembantu Perforce seperti menyalahkan (menulis sendiri berarti Anda dapat membuatnya berperilaku tepat seperti yang Anda inginkan) ...

http://justinsboringpage.blogspot.com/2009/01/who-changed-line-your-working-on-last.html

Saya juga menulis kode yang secara dinamis membuat komentar untuk suatu fungsi pada titik, yang cocok dengan standar pengkodean yang saya kerjakan.

Tidak ada kode elisp saya yang sangat bagus, dan sebagian besar sudah ada di perpustakaan, tetapi sangat berguna untuk membuat emacs melakukan hal-hal khusus yang baru saja muncul selama hari kerja.

justinhj
sumber
10

Anda dapat menemukan deskripsi terperinci tentang emacs & integrasi kontrol versi di situs saya . Saya juga sedang mengerjakan artikel tentang penggunaan Emacs sebagai Lingkungan Pengembangan untuk banyak bahasa - C / C ++, Java, Perl, Lisp / Skema, Erlang, dll ...

Alex Ott
sumber
8

Untuk kontrol versi, ada beberapa hal yang bisa Anda gunakan, tergantung pada sistem kontrol versi apa yang Anda gunakan. Tetapi beberapa fungsi umum untuk mereka semua.

vc.el adalah cara bawaan untuk menangani kontrol versi di tingkat file. Ini memiliki backends untuk sebagian besar sistem kontrol versi. Misalnya, backend Subversion dilengkapi dengan Emacs, dan ada backend git dan lainnya yang tersedia dari sumber lain.

Perintah yang paling berguna adalah Cx vv (vc-next-action) yang melakukan tindakan selanjutnya yang sesuai untuk file yang Anda kunjungi. Ini mungkin berarti memperbarui dari repositori atau melakukan perubahan Anda, vc.el juga rebinds Cx Cq untuk check in dan out file jika Anda menggunakan sistem yang membutuhkannya (seperti RCS).

Perintah lain yang sangat berguna adalah Cx vl dan Cx v = yang menunjukkan kepada Anda log dan diff saat ini untuk file yang Anda gunakan.

Tetapi untuk produktivitas nyata, Anda harus menghindari menggunakan perintah file tunggal vc.el selain untuk hal-hal sederhana. Ada beberapa paket yang dapat memberi Anda gambaran tentang status seluruh pohon Anda, dan memberi Anda lebih banyak kekuatan, dan belum lagi kemampuan untuk membuat komitmen yang koheren yang mencakup beberapa file.

Sebagian besar sangat dipengaruhi atau didasarkan pada pcl-cvs / pcvs asli untuk CVS. Bahkan ada dua dari mereka yang datang dengan subversi, psvn.el dan dsvn.el . Ada paket untuk git dll.

dkagedal
sumber
8

Oke, semua orang di sini memberikan petunjuk yang sempurna untuk membuat emacs IDE yang hebat.

Tetapi siapa pun harus ingat bahwa, ketika Anda menyesuaikan emacs Anda dengan banyak ekstensi (terutama dengan yang untuk memeriksa jenis dengan cepat, pencarian definisi fungsi dll) emacs Anda akan memuat sangat, sangat lambat untuk editor.

Untuk mengatasinya, saya sangat merekomendasikan untuk menggunakan emacs di server mode.

Cukup mudah digunakan, tidak perlu menyesuaikan file init Anda. Anda hanya perlu menjalankan emacs dalam mode daemon;

emacs --daemon

Ini akan membuat server emacs, maka Anda dapat menghubungkannya dari terminal, atau dari gui. Saya juga merekomendasikan untuk membuat beberapa alias agar mudah dipanggil.

alias ec="emacsclient -t"
alias ecc="emacsclient -c &"
# some people also prefer this but no need to fight here;
alias vi="emacsclient -t"

Dengan cara ini, emacs akan menyala lebih cepat daripada gedit, janji.

Satu kemungkinan masalah di sini, jika Anda menjalankan emacs daemon dari pengguna biasa, Anda mungkin tidak dapat menghubungkan server emacs sebagai root.

Jadi, jika Anda perlu membuka file yang memiliki akses root; gunakan trampsaja. Jalankan klien emacs Anda dengan pengguna normal dan buka file seperti ini;

C-x C-f
/sudo:root@localhost/some/file/that/has/root/access/permissions
# on some linux distro it might be `/su:root@...` 

Ini membuat hidup saya lebih mudah, saya dapat membuka IDE python berat saya yang disesuaikan dalam milidetik dengan cara ini. Anda mungkin juga ingin menambahkan emacs --daemon ke startup sistem Anda, atau membuat file desktop untuk emacsclient. Itu terserah kamu.

Lebih lanjut tentang daemon emacs dan klien emacs dapat ditemukan di wiki;

http://www.emacswiki.org/emacs/EmacsAsDaemon

http://www.emacswiki.org/emacs/EmacsClient

Muhammet Can
sumber
1
Saya tahu ini lima tahun kemudian, tetapi saya juga menggunakannya saat itu: jika Anda menyetel, EDITOR="emacsclient -t" VISUAL="emacsclient -c"Anda dapat melakukan pengeditan berbasis sudo dengan sudo -eatau sudoedit, yang terkadang lebih disukai daripada menggunakan TRAMP (biasanya untuk alasan audit). Anda juga dapat memanggil emacsclient dengan --alternate-editor= ( membutuhkan ruang di akhir) dan itu akan memulai daemon jika itu tidak berjalan, yang menghilangkan kebutuhan untuk meletakkan daemon di startup sistem jika Anda bersedia menunggu untuk itu pertama kali Anda jalankan editor pada setiap boot.
Darael
7

Saya setuju bahwa Anda harus belajar tentang kompilasi Mx (mengikat itu dan Mx kesalahan berikutnya ke urutan tombol pendek).

Pelajari tentang binding untuk kontrol versi (mis. Vc-diff, vc-next-action, dll.)

Lihatlah ke register. Anda tidak hanya dapat mengingat lokasi dalam buffer tetapi juga konfigurasi seluruh jendela (Cx rw - window-configuration-to-register).

HD.
sumber
6

Titik awal (yang mungkin tidak jelas) untuk menjelajahi fitur VC dari Emacs adalah Mx vc-next-action .

Itu melakukan "operasi kontrol versi logis berikutnya" pada file saat ini, tergantung pada keadaan file dan backend VC. Jadi, jika file tidak di bawah kontrol versi, itu mendaftarkannya, jika file telah diubah, perubahan dikirimkan dll.

Butuh sedikit membiasakan diri, tetapi saya merasa sangat berguna.

Pengikat kunci default adalah Cx vv

Chopmo
sumber
4

Ada TFS.el untuk integrasi emacs ke Microsoft TFS . Ini berfungsi dengan TFS apa pun, termasuk TFS yang menjalankan Codeplex.com.

Langkah-langkah dasar untuk menyiapkan:

  1. Tempatkan tfs.el di jalur beban Anda.

  2. Dalam file .emacs Anda:

    (require 'tfs)
    (setq tfs/tf-exe  "c:\\vs2008\\common7\\ide\\tf.exe")
    (setq tfs/login "/login:domain\\userid,password")
          -or-
    (setq tfs/login (getenv "TFSLOGIN"))  ;; if you have this set
  3. juga dalam file .emacs Anda, atur binding kunci lokal atau global untuk perintah tfs. seperti itu:

    (global-set-key  "\C-xvo" 'tfs/checkout)
    (global-set-key  "\C-xvi" 'tfs/checkin)
    (global-set-key  "\C-xvp" 'tfs/properties)
    (global-set-key  "\C-xvr" 'tfs/rename)
    (global-set-key  "\C-xvg" 'tfs/get)
    (global-set-key  "\C-xvh" 'tfs/history)
    (global-set-key  "\C-xvu" 'tfs/undo)
    (global-set-key  "\C-xvd" 'tfs/diff)
    (global-set-key  "\C-xv-" 'tfs/delete)
    (global-set-key  "\C-xv+" 'tfs/add)
    (global-set-key  "\C-xvs" 'tfs/status)
    (global-set-key  "\C-xva" 'tfs/annotate)
    (global-set-key  "\C-xvw" 'tfs/workitem)
Cheeso
sumber
Um ... apakah ini benar-benar menganjurkan memasukkan kata sandi Anda dalam plaintext di file .emacs Anda?
TED
@ TED - tidak, hanya sebuah ilustrasi. Rahasia harus disimpan di tempat lain dan dibaca dari elisp.
Cheeso
3

kompilasi, kesalahan-berikutnya, dan kesalahan-sebelumnya adalah semua perintah yang cukup penting untuk pengembangan C ++ di Emacs (bekerja sangat baik pada keluaran grep juga). Etag, tag-kunjungan-tabel, dan tag-cari juga penting. completion.el adalah salah satu peretasan tanpa tanda jasa yang bagus di abad ke-20, dan dapat mempercepat peretasan C ++ Anda dengan urutan besar. Oh dan jangan lupa ediff.

Saya belum belajar cara menggunakan kontrol versi tanpa mengunjungi shell, tetapi sekarang saya menjalankan lebih banyak komit (dengan git) saya mungkin harus melakukannya.

jfm3
sumber
3

Anda juga mungkin menemukan tabbar bermanfaat. Ini meniru satu-satunya perilaku yang saya lewatkan ketika pindah dari Eclipse ke Emacs. Terikat "," dan "." untuk pindah ke bilah tab sebelumnya dan berikutnya, itu menghidupkan Anda dari beralih buffer dengan Ctrl-x b sepanjang waktu.

Sayangnya, halaman web yang disebutkan tidak memberikan versi yang benar untuk diunduh. Namun, sebagian besar versi Ubuntu mengirimkannya dalam paket emacs-goodies mereka.

wr.
sumber
1
Keren, saya sedang mencari cara untuk mendapatkan versi tabbar yang lebih baru. Bagi yang tidak menggunakan Ubuntu, Anda dapat menemukannya di sini. Packages.ubuntu.com/karmic/emacs-goodies-el
Ibrahim
3

Saya menggunakan emacs di Windows. modul kompilasi bagus, tetapi saya ingin kompilasi menjadi lebih pintar tentang baris perintah kompilasi yang disarankan. Dimungkinkan untuk menggunakan "File Variables" untuk menentukancompile-command , tetapi saya menginginkan sesuatu yang sedikit lebih pintar dari itu. Jadi saya menulis sedikit fungsi untuk membantu. Itu menebak perintah kompilasi untuk digunakan, untuk meminta pengguna dengan, saat berjalan compile.

Fungsi duga mencari file vbproj atau csproj atau sln, dan jika ditemukan, ini menunjukkan msbuild. Kemudian terlihat pada nama file buffer, dan tergantung pada itu, menyarankan hal yang berbeda. File .wxs berarti itu adalah proyek WIX, dan Anda mungkin ingin membangun MSI, jadi logika tebakan menyarankan perintah nmake untuk MSI. Jika ini adalah modul Javascript, maka sarannya adalah menjalankan jslint-for-wsh.js untuk memisahkan file .js. Sebagai mundur, itu menyarankan nmake.

Kode yang saya gunakan terlihat seperti ini:

(defun cheeso-guess-compile-command ()
  "set `compile-command' intelligently depending on the
current buffer, or the contents of the current directory."
  (interactive)
  (set (make-local-variable 'compile-command)
       (cond
        ((or (file-expand-wildcards "*.csproj" t)
             (file-expand-wildcards "*.vcproj" t)
             (file-expand-wildcards "*.vbproj" t)
             (file-expand-wildcards "*.shfbproj" t)
             (file-expand-wildcards "*.sln" t))
         "msbuild ")

        ;; sometimes, not sure why, the buffer-file-name is
        ;; not set.  Can use it only if set.
        (buffer-file-name
         (let ((filename (file-name-nondirectory buffer-file-name)))
           (cond

            ;; editing a .wxs (WIX Soluition) file
            ((string-equal (substring buffer-file-name -4) ".wxs")
             (concat "nmake "
                     ;; (substring buffer-file-name 0 -4) ;; includes full path
                     (file-name-sans-extension filename)
                     ".msi" ))

            ;; a javascript file - run jslint
            ((string-equal (substring buffer-file-name -3) ".js")
             (concat (getenv "windir")
                     "\\system32\\cscript.exe c:\\users\\cheeso\\bin\\jslint-for-wsh.js "
                     filename))

            ;; something else - do a typical .exe build
            (t
             (concat "nmake "
                     (file-name-sans-extension filename)
                     ".exe")))))
        (t
         "nmake "))))


(defun cheeso-invoke-compile-interactively ()
  "fn to wrap the `compile' function.  This simply
checks to see if `compile-command' has been previously set, and
if not, invokes `cheeso-guess-compile-command' to set the value.
Then it invokes the `compile' function, interactively."
  (interactive)
  (cond
   ((not (boundp 'cheeso-local-compile-command-has-been-set))
    (cheeso-guess-compile-command)
    (set (make-local-variable 'cheeso-local-compile-command-has-been-set) t)))
  ;; local compile command has now been set
  (call-interactively 'compile))

;; in lieu of binding to `compile', bind to my monkeypatched function
(global-set-key "\C-x\C-e"  'cheeso-invoke-compile-interactively)

Saya mencoba melakukan ini sebagai "sebelum saran" untuk fungsi kompilasi tetapi tidak dapat membuatnya bekerja dengan memuaskan. Jadi saya mendefinisikan fungsi baru dan mengikatnya ke kombinasi penekanan tombol yang sama yang telah saya gunakan compile.


EDIT sekarang ada " smarter-compile.el " yang membawa ide ini selangkah lebih maju.

Cheeso
sumber
2

Pada pencarian dokumentasi: itu tergantung pada bahasa pemrograman Anda.

Pustaka dan panggilan sistem biasanya didokumentasikan dalam halaman manual. Untuk itu bisa Anda gunakan M-x man. Beberapa hal dapat didokumentasikan dengan lebih baik di halaman info; gunakan M-x info.

Untuk elisp itu sendiri, gunakan C-h f. Untuk python, gunakan >>> help(<function, class, module>)di interpreter.

Saya menemukan bahwa sebagian besar bahasa lain menawarkan dokumentasi dalam bentuk html. Untuk itu, coba peramban yang disematkan (saya menggunakan w3m). Setel BROWSERvariabel lingkungan Anda menjadi skrip wrapper sekitar emacsclient -e "(w3m-goto-url-new-session \"$@\")"(pada * nix), seandainya ada sesuatu yang membuka browser dan Anda ingin itu dibuka di dalam emacs.

Jonas Kölker
sumber
2

Saya tahu ini adalah posting yang sangat lama. Tetapi pertanyaan ini berlaku untuk pemula emacs.

IMO cara terbaik untuk menggunakan emacs sebagai sebuah ide adalah dengan menggunakan protokol server bahasa dengan emacs. Anda dapat menemukan semua informasi tentang server bahasa di situs web yang ditautkan.

Untuk pengaturan cepat, saya akan mendorong Anda untuk pergi ke halaman ini misalnya . Ego eglot melakukan pekerjaannya dengan cukup baik. Ini terintegrasi dengan baik dengan paket penyelesaian otomatis seperti perusahaan. Memberikan referensi pencarian, dan banyak lagi.

Juga untuk debugger, Anda mungkin perlu debugger khusus untuk bahasa tertentu. Anda dapat menggunakan gdb dari dalam emacs. Cukup ketik M-x gdb.

Untuk mengkompilasi kode Anda, yang terbaik adalah menggunakan perintah shell. Saya sedang mengerjakan eproj proyek ini . Butuh beberapa saat untuk menyelesaikannya. Tetapi yang dilakukannya hanyalah memetakan perintah shell ke tipe proyek. Dan membuat Anda memproyeksikan melalui shell. Itu melakukan hal yang sama untuk mengeksekusi perintah. Saya mungkin perlu bantuan menyelesaikan proyek ini. Ini tidak siap untuk digunakan, tetapi jika Anda tahu sedikit elisp Anda bisa membaca kode.

Selain itu, selalu lebih baik menggunakan perintah kompilasi emacs.

Untuk kontrol versi, saya belum melihat paket lain yang dapat menandingi kekuatan magit . Ini khusus untuk git. Juga untuk git ada paket git-timemachine lain, yang menurut saya sangat berguna.

Pencarian objek dan pencarian kelas disediakan oleh protokol server bahasa.

Pohon proyek dapat digunakan untuk antarmuka seperti ide dengan treemacs .

Ada juga proyek Interaction Library yang disebut proyektil .

Untuk penyelesaian otomatis, saya menemukan mode perusahaan sangat berguna.

Sungguh emacs dapat dibuat untuk melakukan apa saja.

arh sidharth
sumber
1

Dalam beberapa tahun terakhir, Dentang menjadi bagian penting dari dukungan Emacs C ++. Atila Neves berbicara tentang CppCon 2015: "Emacs as a C ++ IDE"

Ini adalah pembicaraan 16 menit, di mana ia menunjukkan solusi untuk topik-topik berikut:

  • Langsung ke definisi
  • Pelengkapan otomatis
  • Penyorotan sintaksis saat terbang
  • Temukan file dalam proyek

Slide dapat ditemukan di sini .

Philipp Claßen
sumber
0

Dalam gaya Unix atau X windows, saya tidak tahu bahwa ada IDE terintegrasi yang bekerja untuk semuanya.

Untuk berinteraksi dengan debugger, cukup satu komponen IDE, pertimbangkan realgud . Hal lain yang menurut saya berguna adalah parser untuk pesan lokasi, sehingga jika Anda memiliki jejak stack panggilan dan ingin mengedit di tempat tertentu di callstack, antarmuka front-end ini akan dapat melakukannya.

Sejauh ini program ini bisa menggunakan peningkatan. Tapi kemudian bisa juga menggunakan orang yang bekerja untuk memperbaikinya.

Penafian: Saya mengerjakan realgud

berbatu
sumber
0

Coba mode-lsp. Sekarang Anda dapat menggunakan fungsionalitas IDE lain di dalam emacs yang terhubung ke server. Cari info lebih lanjut: lsp-mode

acakojic
sumber