Yerel paketler için otomatik yükler nasıl oluşturulur ve etkinleştirilir?


9

Tüm yerel / özel / kişisel paketlerin resmi olarak serbest bırakılmaması gerektiği açıktır ve sadece yerleşik paket yönetimi desteğinden faydalanmak aptalca olacaktır. Yerel paketler için otomatik yüklemeleri nasıl oluşturacağınızı ve etkinleştireceğinizi merak ediyorum. Bu, package.elELPA'dan kurulu paketler için olana benzer. Tekerleği yeniden icat etmekten kaçınmak için, bazı yerel dizinlerin (her biri yerel / özel / kişisel paket olan alt dizinlerle birlikte) ELPA olduğunu iddia etmenin bir yolu var mı? Ayrıca el-getböyle bir senaryo, örneğin özel tarifler yoluyla desteklenebiliyorsa açığım .

Eminim görev oldukça yaygındır ve Emacs'ı ileri düzeyde kullanan herkes er ya da geç o noktaya gelir. Herkes bu alandaki deneyimlerini paylaşabilir mi?


3
update-directory-autoloadsherhangi bir paket yöneticisinden bağımsız olarak kullanılabilir.
npostavs

@npostavs, biliyorum ama özyinelemeli değil ve bu durumda kapsamlı bir çözüm değil. Elbette bu yeterli olmayacak ve bunu kendi uygulamama sarmak zorunda kalacağım.
Alexander Shukaev

1. update-directory-autoloadsÖzyinelemede, özyinelemeli hale getirmek için bir dizin listesi (örn., Bir dizin ve onun torunları) sağlayabilirsiniz. 2. update-file-autoloadsHangi dizinde olduğuna bakılmaksızın, ilgilendiğiniz her dosya için kullanabilirsiniz .
Drew

FYI: package.elayrıca özyinelemesizdir (yani, alt dizinlerdeki kaynaklara sahip paketleri desteklemez).
npostavs

Linux'ta yerel bir MELPA kurdum. Pencereler için iyi bir çözümüm yok. Gerçekten emacs bu tür şeyleri kutunun dışında destekleseydi. Kullanılabilir olup olmadığını görmek için kullanım paketini kontrol etmeye değer olabilir.
eflanigan00

Yanıtlar:


7

Doğru çözüm (IMO), bu kullanım durumu için açık desteği olan bir paket yöneticisi kullanmaktır. Bu straight.elamaçla yazdığım bu olurdu .

README'de diğer paket yöneticileriyle yapılan karşılaştırmalar da dahil olmak üzere ayrıntılı belgeleri okuyabilirsiniz , böylece straight.elsorununuzu çözmek için nasıl kullanabileceğinize bağlı kalacağım .

  1. Deponuzu yerleştirin ~/.emacs.d/straight/repos/<my-repo>.
  2. Kullanarak yükleyin

    (straight-use-package '(<my-package> :local-repo "<my-repo>"))
    
  3. Sen bittin. Kaynak kodda her değişiklik yaptığınızda, otomatik yükleme oluşturma ve bayt-derleme yeniden yapılır (bir sonraki Emacs başlangıcında). Ayrıca bağımlılık yönetimi, isteğe bağlı sürüm kontrol otomasyonu vb.

  4. Paketi yayınlamak istediğinizde, bir yere itin ve tarifi Git deposuna işaret edecek şekilde değiştirin.
  5. Ayrıca kullanabilirsiniz straight.elile use-packagesize (çoğunlukla 's sadece sözdizimi şeker) tercih ederseniz.

3

Linux'ta aşağıdakileri yapıyorum:

Melpa'yı klonlayarak yerel bir melpa deposu oluşturdum.

Yerel paketlerime işaret etmek istediğim tarifleri değiştiriyorum. Bir sonrakilocal-melpa/recipies/ace-window

(ace-window
  :url "/home/my_home/.emacs.d/packages/ace-window/"
  :fetcher git)

Sonra local-mepla türünden make allveya make recipies/ace-windowpaket (ler) inlocal-melpa/packages

Sonra make packages/archive-contents, paket listesini doldurur.

Sonra emacs yerel melpa kullanmak için söylemek için aşağıdaki kullanımda

(setq package-archives '(("local-melpa" . "~/.emacs.d/packages/local-melpa/packages/")))

makePencerelerde nasıl çalıştırılacağını anlayamadım . Ancak paketleri local-melpaLinux'ta oluşturabilir ve pencerelere kopyalayabilirim ve emacs paketleri düzgün bir şekilde anlar ve yükler.

Bunun yararı, ~/.emacs.d/elpa/*dizinimi silerek ve herhangi bir pakete özel güncellemeler yükleyerek istediğim zaman sıfırlayabilmem .


Belki de quelpa da ilgi çeker?
npostavs

Sanırım haklısın. Oturup bakmak zorundayım.
eflanigan00

2

Önceden yüklenmiş bir paketi farklı bir sürümle değiştirdiyseniz ve eksik olan tek şey otomatik yüklemeler dosyasıysa, paketi oluşturmak için paket oluştur-otomatik yüklemeleri kullanabilirsiniz:

(package-generate-autoloads "async" "~/.emacs.d/elpa/async-1.9.3/")

Bir paketi daha eski bir sürüme indirmem gerektiğinde update-directory-autotools'u kullanmayı daha kolay buldum.

Aslında sorunuzu gerçekten cevaplamadığımı düşünüyorum. Bu cevabı şimdilik burada bırakacağım ama cevabım burada daha alakalı: /programming/26348561/how-to-generate-autoloads-for-elpa-packages/50100170

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.