Làm cách nào để tôi cấu trúc lại một dự án trong emacs (thay đổi tên phương thức ở mọi nơi)?


14

Tôi muốn viết lại các phần của một dự án mã nguồn mở. Điều này bao gồm các phương pháp đổi tên. Làm thế nào tôi có thể làm điều đó một cách hiệu quả trong emacs trên toàn bộ dự án?

Tôi thà không sử dụng các bản hack như tìm kiếm và thay thế trong mọi bộ đệm.


1
Ngôn ngữ nào?
phils

Bạn đã xem ag / grep + wgrep + search / thay thế chưa? Bạn không mở bộ đệm riêng lẻ trong đó. Liên quan: emacs.stackexchange.com/a/243/115
Kaushal Modi

Con trăn. Tôi nhận ra câu hỏi của tôi không phải là tốt nhất, xin lỗi.
Mèo Unun

Vì câu hỏi này đã được đặt lên hàng đầu (trong trường hợp bất kỳ ai vấp phải câu hỏi này từ Google), có một thư viện python chuyên dụng để tái cấu trúc được gọi là Rope. Nó thông minh hơn các giải pháp khác được đưa ra khi tính đến bối cảnh. Nó được thực hiện trong Emacs trong một gói được gọi là ropemacs.
jcaw

@TheUnfunCat bạn có thể thêm bối cảnh cho câu hỏi của bạn không? Cho đến bây giờ nó khá mơ hồ, và thêm rằng bạn muốn làm điều này trong một dự án python sẽ làm sáng tỏ rất nhiều thứ.
DoMiNeLa10

Câu trả lời:


14

Bây giờ tôi sử dụng helm-agđể tìm tất cả các phiên bản của tên hàm (tìm kiếm trong tất cả các tệp, bao gồm các thư mục con, không chỉ trong bộ đệm mở), và sau đó tôi sử dụng C-c C-eđể nhập một bộ đệm liệt kê tất cả các kết quả khớp và ở đó tôi thay đổi tên hàm. Khi tôi hoàn thành, tôi nhấn C-c C-c (helm-ag--edit-commit)để lưu các thay đổi cho tất cả các tệp đã mở.

Điều này nghe có vẻ khó hiểu nhưng vui lòng xem https://github.com/S BreathoFukuyama/mus-swoop

Khi bạn mò mẫm nó, bạn sẽ khóc những giọt nước mắt của niềm vui rằng chức năng tuyệt vời như vậy tồn tại.


1
Nó đã chảy nước mắt xuống má tôi.
mihai

1
nghĩa đen đã rơi nước mắt khi thực hiện quy trình công việc này lần đầu tiên, không đùa đâu
Paul

Giải pháp tuyệt vời!
fraxture

6

Vì bạn không chỉ định ngôn ngữ, thật khó để đưa ra câu trả lời tốt hơn so với Tìm kiếm và Thay thế.

Sử dụng wgrep

Nếu bạn chỉ muốn (tương tác) thay thế tất cả các trường hợp của một biểu tượng bằng một biểu tượng khác, wgrep là đặt cược tốt nhất của bạn. Nó cho phép bạn tương tác chỉnh sửa bộ đệm kết quả grep.

  1. Làm M-x package-install RET wgrep.
  2. Chạy đi M-x rgrep. Nó sẽ hỏi bạn một vài câu hỏi dễ và sau đó thực hiện tìm kiếm đệ quy cho cụm từ tìm kiếm bên trong thư mục mà bạn xác định.
  3. Chuyển sang bộ đệm kết quả và làm M-x wgrep-change-to-wgrep-mode. Bộ đệm này hiện có thể chỉnh sửa. Mọi thay đổi bạn thực hiện ở đây sẽ được phản ánh trong chính các tệp.
  4. Chạy một replace-regexphoặc một query-replace-regexptrong bộ đệm này, để thực hiện tái cấu trúc.
  5. Hoàn thành các chỉnh sửa của bạn với M-x wgrep-save-all-buffersM-x wgrep-finish-edit.


3

Bạn có thể sử dụng counsel-rgtheo sau C-c C-ođể có được danh sách tất cả các ứng cử viên trong bộ đệm. Nhấn wđể chỉnh sửa chúng với wgrep. Tôi đề nghị ieditđổi tên biểu tượng. Nhấn C-c C-cđể cam kết.

Phụ thuộc:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.