Đổi tên tái cấu trúc biến cục bộ


10

Có một công cụ tái cấu trúc elisp có thể đổi tên các biến cục bộ và các đối số hàm không? Tôi muốn có thể biến:

(defun my-func (s r)
  ...
  (use s .. r))

vào:

(defun my-func (string replacement)
  ...
  (use string .. replacement))

sử dụng một phương pháp biết cách tìm các tham chiếu biến. Tôi ổn nếu nó không phải là siêu lai.


4
Nhiều con trỏ có thể chỉnh sửa tất cả các phiên bản của một biểu tượng trong defun hiện tại.
Malabarba

Cũng xem iedit.
InHarmsWay


4
Không phải tất cả các mã là của chúng tôi. Một số mã đã cũ.
Gracjan Polak

2
Tôi thường thay thế regrec trong khu vực \ bSYM \ b
BRPocock

Câu trả lời:


2

TL; DR: erefactor-rename-symbol-in-buffer

Bạn đang tìm kiếm một chức năng đổi tên thông minh từ vựng - một chức năng đổi tên các biến theo phạm vi của chúng, không chỉ là một tìm kiếm và thay thế ngu ngốc. Các gói như thế này tồn tại cho rất nhiều ngôn ngữ nhưng kể từ khi viết (tháng 4 năm 2019), thực tế không có nhiều lựa chọn cho Emacs Lisp. Các erefactorgói là người duy nhất tôi biết.

erefactor-rename-symbol-in-bufferlà chức năng bạn muốn. Đó là một lệnh tìm và thay thế thông minh sẽ thay thế các ký hiệu trong phạm vi hiện tại (bao gồm cả các tài liệu). Hạn chế của lệnh này là nó sẽ không tìm kiếm bên ngoài bộ đệm hiện tại. Nó thông minh, nhưng không hoàn hảo. Nó sẽ yêu cầu bạn xác nhận từng lần để đảm bảo kết quả cuối cùng là vệ sinh.

Các chức năng đổi tên khác là erefactor-rename-symbol-in-package. Điều này không hoạt động theo cùng một cách - nó chỉ hoạt động trên các biểu tượng toàn cầu. Nó phụ thuộc vào gói của bạn được thiết lập chính xác, với một hệ thống nhóm và tiền tố, và nó cần biến để khớp với tiền tố của gói. Nó không mạnh lắm - sẽ thất bại nếu bạn không thiết lập mọi thứ theo cách mà chức năng này mong đợi. Tôi nghĩ rằng nếu bạn đổi tên một biểu tượng toàn cầu, bạn cũng có thể sử dụng một tìm kiếm ngây thơ và thay thế vì các biểu tượng toàn cầu trong Elisp không có không gian tên. Những lợi ích của sự hiểu biết từ vựng là tối thiểu. Lệnh này quá mong manh cho sự đánh đổi. Tôi sẽ đề nghị chỉ sử dụng projectile-replace.

Erefactor có một số lệnh Elisp khác mà bạn có thể thấy hữu ích. Một danh sách (không đầy đủ) có sẵn trong readme .

Nó không được mô tả trên trang GitHub nhưng erefactorcó sẵn trên MELPA ( M-x package-install RET erefactor). Trang MELPA có thể được tìm thấy ở đây .

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.