Derleme modu geçerli dizini otomatik olarak değiştiriliyor mu?


16

Şu anda, derleme komutum aşağıdaki gibidir:

cd ~/somedir && ./somescript.sh

Bu, emac'ların bir hatanın olduğu dosyayı bulmasını (ve açmasını) önler.

Tabii ki M-x cdmanuel olarak çalıştırabilirim , ancak arabelleğin geçerli dizinini programlı olarak değiştirmesini söylemenin bir yolu var mı?


1
Bu da yapmaya çalıştığım bir şey. İdeal olarak, temel dizine .dir-locals.el içine koyabileceğiniz bir şey olurdu (varsayılan dizini orada gördüğümü hackler istenmeyen yan etkilere neden olur ve bunu yalnızca derleme modu için ayarlamaz çalışmıyor gibi görünüyor).
Julian Squires

Yanıtlar:


7

Son olarak, çok müdahaleci olduğu gibi mevcut dizine güvenmeyi bıraktım ve sonun etkilendiği yerde ido gibi diğer şeyler ...

Bunun yerine derleme dizinimi compilation-search-path

(add-to-list 'compilation-search-path "/path/to/build")

Bu soruda bulundu: Emacs'ın compile-goto-error dosyasının derleme arabelleğinden aldığı yol nasıl ayarlanır?

Soru ayrıca, bazı dizelerin yayılması durumunda dizin eşleyicinin dizini otomatik olarak değiştirebileceğini de açıklamaktadır:

Entering directory `...'
... 
Leaving directory `...'

Bu görünüşe göre özelleştirilebilir.


Bu sağlam bir çözüm gibi görünüyor. Sizin için çalışıyorsa, kabul etmekten çekinmeyin.
Malabarba

Derleme sistemi içinde bazı dosyaları bulmak gerekiyorsa bu çalışmayabilir unutmayın /path/to/build.
Andre Holzner

5

Derleme komutunu çağırmak istediğiniz dizinin Dired arabelleğini, bir çapa olarak hizmet etmek için basitçe yapabilirsiniz. Derlemek istediğinizde, Dired buffer'a geçin ve compile komutunu çalıştırın. compilekomutunu Dired buffer dizininde çalıştıracaktır. Bunun avantajı, M-x cdderlemek istediğinizde dizinleri taramak zorunda kalmamanızdır.

Eğer kullanırsanız projectile, bu adlı bir komut vardır projectile-compileotomatik tanıdığı proje kökünde derleme komutu çalışır projectile.


4

Bu alternatif komut hile yapmalıdır:

(defun compile-in-dir (dir command)
  (interactive "DCompile in directory: \nsCommand: ")
  (let ((default-directory dir))
    (compile command)))

Alternatif olarak, derlemeyi normal compilekomutu kullanarak çalıştırdıktan sonra (setq default-directory "~/somedir"), *compilation*arabellekte değerlendirebilirsiniz. Bu, hata navigasyonunun çalışmasını sağlamalıdır, ancak recompilearkadaşlarınızın doğru şeyi yapmasını durdurabilir .

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.