emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/vlf b14c912 290/310: Copy around buffer specific profil


From: Stefan Monnier
Subject: [elpa] externals/vlf b14c912 290/310: Copy around buffer specific profile vectors when forking new buffers.
Date: Sat, 28 Nov 2020 00:33:34 -0500 (EST)

branch: externals/vlf
commit b14c912afbbb8f132d3a4c559207c3bab3b9ea87
Author: Andrey Kotlarski <m00naticus@gmail.com>
Commit: Andrey Kotlarski <m00naticus@gmail.com>

    Copy around buffer specific profile vectors when forking new buffers.
---
 vlf-occur.el | 28 +++++++++++-----------------
 vlf-tune.el  | 18 ++++++++++++++++++
 2 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/vlf-occur.el b/vlf-occur.el
index 4d4d261..8b6d7c4 100644
--- a/vlf-occur.el
+++ b/vlf-occur.el
@@ -127,7 +127,10 @@ EVENT may hold details of the invocation."
               (match-pos (+ (get-text-property pos 'line-pos)
                             pos-relative)))
           (cond (current-prefix-arg
-                 (setq vlf-buffer (vlf file t))
+                 (let ((original-occur-buffer vlf-occur-vlf-buffer))
+                   (setq vlf-buffer (vlf file t))
+                   (if (buffer-live-p original-occur-buffer)
+                       (vlf-tune-copy-profile original-occur-buffer)))
                  (or not-hexl (hexl-mode))
                  (switch-to-buffer occur-buffer))
                 ((not (buffer-live-p vlf-buffer))
@@ -155,9 +158,7 @@ Prematurely ending indexing will still show what's found so 
far."
         (file buffer-file-name)
         (file-size vlf-file-size)
         (batch-size vlf-batch-size)
-        (is-hexl (derived-mode-p 'hexl-mode))
-        (insert-bps vlf-tune-insert-bps)
-        (insert-raw-bps vlf-tune-insert-raw-bps))
+        (is-hexl (derived-mode-p 'hexl-mode)))
     (with-temp-buffer
       (setq buffer-file-name file
             buffer-file-truename file
@@ -166,23 +167,16 @@ Prematurely ending indexing will still show what's found 
so far."
       (set-buffer-modified-p nil)
       (set (make-local-variable 'vlf-batch-size) batch-size)
       (when vlf-tune-enabled
-        (setq vlf-tune-insert-bps insert-bps)
-        (if is-hexl
-            (progn (setq vlf-tune-insert-raw-bps insert-raw-bps)
-                   (vlf-tune-batch '(:hexl :raw) t))
-          (vlf-tune-batch '(:insert :encode) t)))
+        (vlf-tune-copy-profile vlf-buffer)
+        (vlf-tune-batch (if is-hexl
+                            '(:hexl :raw)
+                          '(:insert :encode)) t))
       (vlf-mode 1)
       (if is-hexl (hexl-mode))
       (goto-char (point-min))
       (vlf-build-occur regexp vlf-buffer)
-      (when vlf-tune-enabled
-        (setq insert-bps vlf-tune-insert-bps)
-        (if is-hexl
-            (setq insert-raw-bps vlf-tune-insert-raw-bps))))
-    (when vlf-tune-enabled              ;merge back tune measurements
-      (setq vlf-tune-insert-bps insert-bps)
-      (if is-hexl
-          (setq vlf-tune-insert-raw-bps insert-raw-bps)))))
+      (if vlf-tune-enabled
+          (vlf-tune-copy-profile (current-buffer) vlf-buffer)))))
 
 (defun vlf-occur (regexp)
   "Make whole file occur style index for REGEXP.
diff --git a/vlf-tune.el b/vlf-tune.el
index 74aadec..21441f5 100644
--- a/vlf-tune.el
+++ b/vlf-tune.el
@@ -98,11 +98,29 @@ Avoid decreasing this after opening file with VLF."
 (defvar vlf-tune-dehexlify-bps nil
   "Vector of bytes per second dehexlify measurements.")
 
+(defvar vlf-start-pos)
 (defvar hexl-bits)
 (defvar hexl-max-address)
 (declare-function hexl-line-displen "hexl")
 (declare-function dehexlify-buffer "hexl")
 
+(defun vlf-tune-copy-profile (from-buffer &optional to-buffer)
+  "Copy specific profile vectors of FROM-BUFFER to TO-BUFFER.
+If TO-BUFFER is nil, copy to current buffer."
+  (let (insert-bps insert-raw-bps encode-bps)
+    (with-current-buffer from-buffer
+      (setq insert-bps vlf-tune-insert-bps
+            insert-raw-bps vlf-tune-insert-raw-bps
+            encode-bps vlf-tune-encode-bps))
+    (if to-buffer
+        (with-current-buffer to-buffer
+          (setq vlf-tune-insert-bps insert-bps
+                vlf-tune-insert-raw-bps insert-raw-bps
+                vlf-tune-encode-bps encode-bps))
+      (setq vlf-tune-insert-bps insert-bps
+            vlf-tune-insert-raw-bps insert-raw-bps
+            vlf-tune-encode-bps encode-bps))))
+
 (defun vlf-tune-closest-index (size)
   "Get closest measurement index corresponding to SIZE."
   (let ((step (float vlf-tune-step)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]