Jak mogę powstrzymać emacsa przed pytaniem, czy chcę załadować duży plik?

18

Kiedy otwieram duży plik w emacsie, pojawia się komunikat „Plik foo.bar jest duży; naprawdę otwarty?

Jak powstrzymać emacsa od ciągłego zadawania mi tego pytania? Innymi słowy, jeśli otworzę plik, chcę go otworzyć, bez względu na to, jak duży jest.

Tola Odejayi
źródło
Odpowiedź jest dostępna tutaj: superuser.com/questions/508498/… (próg ostrzeżenia dla dużego zbioru plików zero)
R Perrin
Poniższa odpowiedź Gilles jest bardziej kompletna i nauczy Cię, jak rozwiązywać kolejne problemy.
jrouquie

Odpowiedzi:

29

Poprzez instrukcję

W instrukcji (którą możesz przeglądać w Emacsie w Info:) C-h i m Emacs RET: przejdź do rozdziału dotyczącego plików , a następnie do sekcji dotyczącej odwiedzania (tj. Otwierania) plików. Poszukaj słowa „duży”:

Jeśli spróbujesz odwiedzić plik większy niż large-file-warning-threshold(domyślnie jest to 10000000, czyli około 10 megabajtów), Emacs najpierw poprosi o potwierdzenie. Możesz odpowiedzieć y, aby przejść do pliku.

To nie jest cała historia, więcej informacji można znaleźć w dokumentacji large-file-warning-threshold( C-h v large-file-warning-threshold RET).

próg ostrzeżenia o dużych plikach jest zmienną zdefiniowaną w files.el.
Jego wartość wynosi 10000000

Maksymalny rozmiar pliku, powyżej którego wymagane jest potwierdzenie.
Kiedy zero, nigdy nie proś o potwierdzenie.

Aby ustawić wartość, możesz użyć interfejsu Dostosuj (na ekranie pomocy znajduje się link do zmiennej) lub umieścić następującą instrukcję w .emacs:

(setq large-file-warning-threshold nil)

Pisz, C-M-xgdy punkt znajduje się na tej linii, aby go wykonać teraz.

W interfejsie dostosowywania

W „Plikach”, w „Znajdź pliki” znajduje się ustawienie „Próg ostrzeżenia o dużych plikach”. Możesz ustawić dużą wartość, chociaż na komputerze 32-bitowym możesz napotkać stosunkowo mały twardy limit Emacsa dotyczący wielkości całkowitych.

Czytając źródło

Spójrz na funkcję otwierania plików: C-h k C-x C-f(lub C-h f find-file RET). Kliknij, files.elaby przeglądać plik źródłowy (musisz mieć zainstalowane źródła Lisp). Nie czytaj kodu - jest dość duży - ale szukaj części wiadomości w tym pliku. Znajdziesz

(defun abort-if-file-too-large (size op-type filename)
  "If file SIZE larger than `large-file-warning-threshold', allow user to abort.
OP-TYPE specifies the file operation being performed (for message to user)."
  (when (and large-file-warning-threshold size
       (> size large-file-warning-threshold)
       (not (y-or-n-p
         (format "File %s is large (%dMB), really %s? "
             (file-name-nondirectory filename)
             (/ size 1048576) op-type))))
      (error "Aborted")))

Komunikat jest wyświetlany tylko wtedy, gdy spełnione są określone warunki. Pierwszy warunek jest large-file-warning-threshold(interpretowany jako wartość logiczna), tzn. large-file-warning-thresholdMusi być inny niż zero. Możesz więc wyłączyć komunikat, ustawiając tę ​​zmienną na nil. (Możesz potwierdzić, że jest to zmienna globalna, patrząc na jej definicję w tym samym pliku - jest to element, który można dostosowywać, a dokumentacja wyjaśnia, w jaki sposób jest używana, jeśli nie znasz wystarczająco Lisp i tylko zorientowałeś się, że zmienna ma znaczenie w niektórych sposób.)

Gilles „SO- przestań być zły”
źródło
Jestem pod wrażeniem szczegółów i podanych przez ciebie referencji. Wielkie dzięki, Gilles.
Tola Odejayi