Jak refaktoryzować w projekcie w emacs (wszędzie zmieniać nazwę metody)?


15

Chcę przepisać części projektu typu open source. Obejmuje to zmiany nazw metod. Jak mogę to zrobić skutecznie w emacach w całym projekcie?

Wolałbym nie używać hacków takich jak wyszukiwanie i zamiana w każdym buforze.


1
Jaki język?
— phils

Czy przeglądałeś ag / grep + wgrep + search / replace? Nie otwierasz w tym buforów indywidualnie. Powiązane: emacs.stackexchange.com/a/243/115
— Kaushal Modi

Pyton. Zdaję sobie sprawę, że moje pytanie nie było najlepsze, przepraszam.
— The Unfun Cat

Ponieważ pytanie to zostało uderzone do góry (na wypadek, gdyby ktoś natknął się na to z Google), istnieje specjalna biblioteka python do refaktoryzacji o nazwie Rope. Jest bardziej inteligentny niż inne oferowane rozwiązania, ponieważ uwzględnia kontekst. Jest zaimplementowany w Emacsie w pakiecie o nazwie ropemacs.
— jcaw 30.09.16

@TheUnfunCat czy możesz dodać więcej kontekstu do swojego pytania? Na razie jest to dość niejasne, a dodanie, że chcesz to zrobić w projekcie Pythona, wyjaśni wiele rzeczy.
— DoMiNeLa10 29.01.19

Odpowiedzi:


14

Teraz używam helm-agdo znajdowania wszystkich instancji nazwy funkcji (wyszukiwanie we wszystkich plikach, w tym w podkatalogach, nie tylko w otwartych buforach), a następnie używam C-c C-edo wprowadzenia bufora, który wyświetla wszystkie dopasowania, i tam zmieniam nazwę funkcji. Po C-c C-c (helm-ag--edit-commit)zakończeniu naciskam, aby zapisać zmiany we wszystkich otwartych plikach.

Może to zabrzmieć myląco, ale proszę zobaczyć https://github.com/ShingoFukuyama/helm-swoop

Kiedy będziesz go smucić, będziesz płakać łzami radości, że istnieje taka cudowna funkcjonalność.


1
Rozlało mi policzek.
— mihai

1
dosłownie miałam łzy w oczach podczas wykonywania tego przepływu pracy po raz pierwszy, bez żartów
— Paul

Świetne rozwiązanie!
— fraxture

6

Ponieważ nie określono języka, trudno jest podać lepsze odpowiedzi niż „Wyszukaj i zamień”.

Korzystanie wgrep

Jeśli chcesz (interaktywnie) zastąpić wszystkie wystąpienia symbolu innym, najlepszym rozwiązaniem jest wgrep. Pozwala interaktywnie edytować bufor wyników grep.

  1. Zrobić M-x package-install RET wgrep.
  2. Uruchom M-x rgrep. Zadaje ci kilka prostych pytań, a następnie przeprowadza rekurencyjne wyszukiwanie wyszukiwanego terminu w określonym katalogu.
  3. Przejdź do bufora wyników i wykonaj M-x wgrep-change-to-wgrep-mode. Ten bufor można teraz edytować. Wszelkie wprowadzone tutaj zmiany zostaną odzwierciedlone w samych plikach.
  4. Uruchom a replace-regexplub a query-replace-regexpw tym buforze, aby dokonać refaktoryzacji.
  5. Zakończ edycję za pomocą M-x wgrep-save-all-buffersiM-x wgrep-finish-edit .


3

Możesz użyć, counsel-rga następnie, C-c C-oaby uzyskać listę wszystkich kandydatów w buforze. Naciśnij, waby edytować je za pomocą wgrep. Polecam ieditdo zmiany nazw symboli. naciśnijC-c C-c aby zatwierdzić.

Zależności:

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.