diff --git a/TeXmacs/progs/generic/search-widgets.scm b/TeXmacs/progs/generic/search-widgets.scm index 4d8fd2a3d181501cae0de4e58a3c17b9472a9e95..d9f65f8d8dc47e05973e30a78cdc449dd09211eb 100644 --- a/TeXmacs/progs/generic/search-widgets.scm +++ b/TeXmacs/progs/generic/search-widgets.scm @@ -21,6 +21,61 @@ (define search-window #f) + +(define-preferences + ("pos_text" "0/0" noop) +) + + + +(tm-define (update-search-pos-text) + (let* ((sels (get-alt-selection "alternate")) + (total (quotient (length sels) 2)) + (cur (cursor-path)) + (current-idx 0)) + + (if (= total 0) + (set-preference "pos_text" "0/0") + (begin + (let loop ((l sels) (cnt 0)) + (if (or (null? l) (null? (cdr l))) + (set! current-idx cnt) + (let ((start (car l))) + (if (path-less-eq? start cur) + (loop (cddr l) (+ cnt 1)) + (set! current-idx cnt))))) + + (if (and (> total 0) (= current-idx 0)) + (set! current-idx 0)) + + + (set-preference "pos_text" + (string-append (number->string current-idx) + "/" + (number->string total))) + (refresh-now "current_pos") + (debug-message "std" (get-preference "pos_text")))))) + + +; (define-preferences +; ("pos_text" "0/0" +; (lambda() +; (catch #t +; (lambda () +; ;; 检查当前是否在搜索过程中 +; (when toolbar-search-active? +; (delayed +; +; (refresh-now "current_pos"))) +; ) +; (lambda (key . args) (noop)) +; ) +; ) +; ) +; ) + + + (tm-define (search-buffer) (string->url "tmfs://aux/search")) @@ -172,6 +227,8 @@ (with after? (next-search-result #t #f) (when (not after?) (selection-cancel)))))))) + (with-buffer (master-buffer) + (update-search-pos-text)) (with-buffer (search-buffer) (if ok? (init-default "bg-color") @@ -219,6 +276,7 @@ (selection-set-range-set sel) (go-to* (car sel)) (when strict? (set-search-reference (car sel))) + (update-search-pos-text) #t)))) (define (extreme-search-result last?) @@ -228,12 +286,16 @@ (begin (selection-set-range-set sel) (go-to* (car sel)) - (set-search-reference (car sel)))))) + (set-search-reference (car sel)) + (update-search-pos-text) + )))) (tm-define (search-next-match forward?) (with-buffer (master-buffer) (next-search-result forward? #t))) + + (tm-define (search-extreme-match last?) (with-buffer (master-buffer) (extreme-search-result last?))) @@ -497,11 +559,22 @@ (padded (resize "350px" "200px" (texmacs-input `(with ,@init ,(search-document)) - `(style (tuple ,@style)) aux)) + `(style (tuple ,@style)) aux)) + === (hlist + (refreshable "current_pos" + (text (get-preference "pos_text")) + ) ((balloon (icon "tm_search_first.xpm") "First occurrence") - (search-extreme-match #f)) + (begin + (search-extreme-match #f) + ; (if (string=? (get-preference "pos_text") "1/1") + ; (set-preference "pos_text" "0/0") + ; (set-preference "pos_text" "1/1")) + ; (debug-message "std" (get-preference "pos_text")) + (refresh-now "current_pos") + )) ((balloon (icon "tm_search_previous.xpm") "Previous occurrence") (search-next-match #f)) ((balloon (icon "tm_search_next.xpm") "Next occurrence") @@ -741,7 +814,10 @@ ;; (search-buffer))) (input (search-toolbar-keypress answer #f) "search" (list (or current-search pending-key-strokes)) "25em") - // // + // + (refreshable "current_pos" + (text (get-preference "pos_text"))) + // ((balloon (icon "tm_search_first.xpm") "First occurrence") (search-extreme-match #f)) ((balloon (icon "tm_search_previous.xpm") "Previous occurrence") diff --git a/TeXmacs/tests/tmu/202_83.tmu b/TeXmacs/tests/tmu/202_83.tmu new file mode 100644 index 0000000000000000000000000000000000000000..846cc7823a1dcf515f6d3b858140ddf90121ca16 --- /dev/null +++ b/TeXmacs/tests/tmu/202_83.tmu @@ -0,0 +1,14 @@ +> + +> + +<\body> + 111111111111111111111 + + +<\initial> + <\collection> + + + + diff --git a/devel/202_83.md b/devel/202_83.md new file mode 100644 index 0000000000000000000000000000000000000000..568517599342dd80d7a07666e4763d1e6eb2a75b --- /dev/null +++ b/devel/202_83.md @@ -0,0 +1,8 @@ +# 202_83 搜索和替换组件显示共n处,正在搜索/替换第i处这种提示 + +## 如何测试 +测试文件:TeXmacs/tests/tmu/202_83.tmu +1. 按下ctrl + f,往搜索框里输入1,按下下方寻找下一个按钮,打开调试->控制天->调试控制台,观察输出的字符串和当前高亮位置能否对应上 + +## 2025/12/12 +