Merge pull request #52 from gilbertw1/feature-large-file-prompt

add `doom/large-file-check to prompt literal open of large files
This commit is contained in:
Henrik Lissner 2017-05-06 21:31:16 +02:00 committed by GitHub
commit da13cb3d64
2 changed files with 28 additions and 0 deletions

View file

@ -206,3 +206,17 @@ for function signatures or notes. Run again to clear the header line."
(setq content (replace-regexp-in-string "\n" " " content t t))
(setq content (replace-regexp-in-string "\\s-+" " " content))
content)))))
;;;###autoload
(defun doom/check-large-file ()
(let* ((filename (buffer-file-name))
(size (nth 7 (file-attributes filename))))
(when (and
(not (memq major-mode doom-large-file-modes-list))
size (> size (* 1024 1024 doom-large-file-size))
(y-or-n-p (format (concat "%s is a large file, open literally to "
"avoid performance issues?")
filename)))
(setq buffer-read-only t)
(buffer-disable-undo)
(fundamental-mode))))

View file

@ -1,5 +1,16 @@
;;; core-editor.el --- filling the editor shaped hole in the Emacs OS
(defvar doom-large-file-size 1
"Size (in MB) above which the user will be propmpted to open the file literally to avoid
performance issues. Opening literally means that no major or minor modes are active and
the buffer is readonly.")
(defvar doom-large-file-modes-list
'(archive-mode tar-mode jka-compr git-commit-mode image-mode
doc-view-mode doc-view-mode-maybe ebrowse-tree-mode pdf-view-mode)
"Major modes which `doom/check-large-file' will not be automatically applied to")
(setq-default
;; Save clipboard contents into kill-ring before replacing them
save-interprogram-paste-before-kill t
@ -88,6 +99,9 @@
(insert linestr))))
(advice-add #'delete-trailing-whitespace :around #'doom*delete-trailing-whitespace)
;; automatically check for large files and optionally prompt to open literally
(add-hook 'find-file-hook 'doom/check-large-file)
;;
;; Core Plugins