From b14c912afbbb8f132d3a4c559207c3bab3b9ea87 Mon Sep 17 00:00:00 2001 From: Andrey Kotlarski Date: Wed, 17 Dec 2014 01:42:05 +0200 Subject: [PATCH] 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)))