Fixes performance issues in Emacs for large files.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Wed, 11 Feb 2015 16:32:42 +0200
changeset 1207 c658f0d30525
parent 1206 4de7a444cf35
child 1208 e2ce4a60af3e
Fixes performance issues in Emacs for large files.
.emacs-my
--- a/.emacs-my	Wed Feb 11 19:09:06 2015 +0200
+++ b/.emacs-my	Wed Feb 11 16:32:42 2015 +0200
@@ -303,6 +303,8 @@
 (setq column-number-mode t)
 (setq line-number-mode t)
 (setq size-indication-mode t)
+(setq line-number-display-limit large-file-warning-threshold)
+(setq line-number-display-limit-width 200)
 ;; (linum-mode 1)
 
 ;; Also useful such format: (setq display-time-format " %H:%M %d-%m-%y ")
@@ -905,6 +907,24 @@
 (icomplete-mode 1)
 (setq icomplete-with-completion-tables t)
 
+(defun my--is-file-large ()
+  "If buffer too large and my cause performance issue."
+  (< large-file-warning-threshold (buffer-size)))
+
+(define-derived-mode my-large-file-mode fundamental-mode "LargeFile"
+  "Fixes performance issues in Emacs for large files."
+  ;; (setq buffer-read-only t)
+  (setq bidi-display-reordering nil)
+  (jit-lock-mode nil)
+  (buffer-disable-undo)
+  ;; (make-variable-buffer-local 'mode-line-format)
+  ;; (setq mode-line-format (delq 'mode-line-position 'mode-line-format))
+  (set (make-variable-buffer-local 'global-hl-line-mode) nil)
+  (set (make-variable-buffer-local 'line-number-mode) nil)
+  (set (make-variable-buffer-local 'column-number-mode) nil) )
+
+(add-to-list 'magic-mode-alist (cons #'my--is-file-large #'my-large-file-mode))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (message "completion")