Pracuję nad dzieleniem kodu na mniejsze pliki i trochę go refaktoryzuję. Rozważmy następujący kod poniżej w sekcji chcę wyodrębnić:Refaktoryzacja w Emacs
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar my-packages '(org magit)
"A list of packages to ensure are installed at launch.")
(dolist (p my-packages)
(when (not (package-installed-p p))
(package-install p)))
- chcę wziąć sekcję powyżej i zastąpić go czymś takim
(require `file-name)
- Następnie podejmuje tekst zastępuje i umieścić, że w nowym plik w bieżącym katalogu o nazwie
file-name.el
- a następnie dodać linię do początku pliku
(provides `file-name)
byłoby wspaniale gdybym mógł uderzyć w keychord, a następnie wpisać imię i tak się stało. Jeśli jest to prosty sposób, to chciałbym usłyszeć możliwe rozwiązania.
Edit: Zaczynam bounty, ponieważ myślę, że odnosi się to do większej liczby typów kodu niż Lisp i chciałbym mieć coś nieco bardziej ogólne, że można rozszerzać.
Rozważałem Yasnippet, ale nie sądzę, że jest wystarczająco silny, aby wykonać zadanie pod ręką. Zasadniczo idealnym przepływem pracy byłoby zaznaczenie linii do wyodrębnienia, zastąpienie jej odpowiednią dyrektywą wymagającą lub włączającą i wysłanie tekstu do własnego pliku. Idealnie jedna komenda i coś, co jest świadome rodzaju edytowanego pliku lub co najmniej trybu głównego, więc zachowanie można dostosować, ponownie yasnippet jest dobry w wykonywaniu różnych zadań podczas edycji w różnych głównych trybach jednak nie mam pojęcia, jak wykonać tę pracę lub ocenić możliwość jej działania.
Daj mi znać, jeśli potrzebujesz więcej informacji.
Zdaję sobie sprawę, że jest to dość stare, ale tylko sugestia; Osobiście przeniosłem '' (delete-region ...) (insert) 'wywołania * po * bloku' 'with-current-buffer '', więc jeśli np. Wystąpił błąd podczas tworzenia pliku (być może katalog tylko do odczytu lub coś takiego), funkcja przerwie działanie bez "uszkodzenia" oryginalnego pliku. – BRFennPocock