Skip to content

Commit 291c047

Browse files
committed
切换标签页后实时更新搜索替换辅助窗口的状态
1 parent b111f99 commit 291c047

File tree

1 file changed

+72
-11
lines changed

1 file changed

+72
-11
lines changed

TeXmacs/progs/generic/search-widgets.scm

Lines changed: 72 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,46 @@
2020

2121
(define isreplace? #f)
2222

23-
;; 返回当前窗口的md5值
24-
(define (current-view-md5)
25-
(md5 (url->string (current-view-url))))
26-
;;设置当前窗口的辅助窗口状态
23+
#|
24+
set-search-window-state
25+
设置搜索/替换辅助窗口的打开状态和模式。
26+
27+
语法
28+
----
29+
(set-search-window-state opened? is-search?)
30+
31+
参数
32+
----
33+
opened? : boolean
34+
窗口是否打开:
35+
- #t : 窗口打开
36+
- #f : 窗口关闭
37+
38+
is-search? : boolean
39+
窗口模式:
40+
- #t : 搜索模式
41+
- #f : 替换模式
42+
43+
返回值
44+
----
45+
#<unspecified>
46+
无显式返回值(返回 #<unspecified>)。
47+
48+
逻辑
49+
----
50+
将 (opened? is-search?) 状态列表存储到 search-replace-window-table 哈希表中,
51+
以当前搜索缓冲区 (search-buffer) 为键。
52+
53+
注意
54+
----
55+
此函数用于管理搜索/替换辅助窗口的显示状态和模式切换。
56+
每个文档视图有独立的搜索缓冲区,因此状态与当前文档视图关联。
57+
|#
2758
(tm-define (set-search-window-state opened? is-search?)
28-
(ahash-set! search-replace-window-table (current-view-md5) (list opened? is-search?)))
59+
(ahash-set! search-replace-window-table (search-buffer) (list opened? is-search?)))
2960
;; 获取当前窗口的辅助窗口状态
3061
(define (get-search-window-state)
31-
(ahash-ref search-replace-window-table (current-view-md5)))
62+
(ahash-ref search-replace-window-table (search-buffer)))
3263

3364
#|
3465
update-search-pos-text
@@ -80,16 +111,46 @@ action : string
80111

81112

82113

114+
#|
115+
refresh-search-replace
116+
根据存储的状态刷新搜索/替换辅助窗口的显示和模式。
117+
118+
语法
119+
----
120+
(refresh-search-replace)
121+
122+
参数
123+
----
124+
无参数。
125+
126+
返回值
127+
----
128+
#<unspecified>
129+
无显式返回值(返回 #<unspecified>)。
130+
131+
逻辑
132+
----
133+
1. 获取当前搜索缓冲区的窗口状态 (get-search-window-state)
134+
2. 根据状态执行相应操作:
135+
- 状态为空 (#f) : 隐藏辅助窗口 (情况 0)
136+
- 状态为 (#f _) : 隐藏辅助窗口 (情况 1)
137+
- 状态为 (#t #t) : 调用 interactive-search 显示搜索窗口 (情况 2)
138+
- 状态为 (#t #f) : 调用 interactive-replace 显示替换窗口 (情况 3)
139+
140+
注意
141+
----
142+
此函数在切换标签页或窗口状态变化时调用,确保辅助窗口与当前文档视图状态一致。
143+
状态通过 set-search-window-state 存储,每个文档视图有独立的搜索缓冲区。
144+
|#
83145
(tm-define (refresh-search-replace)
84146
(let ((state (get-search-window-state)))
85-
(cond ((not state)
147+
(cond ((not state)
86148
(show-auxiliary-widget #f)) ;; 情况 0:如果状态为空,隐藏辅助窗口
87-
((not (car state))
88-
(debug-message "std" "11111")
149+
((not (car state))
89150
(show-auxiliary-widget #f)) ;; 情况 1:如果第一个是#f,隐藏辅助窗口
90-
((cadr state)
151+
((cadr state)
91152
(interactive-search)) ;; 情况 2:如果是 (#t #t),调用搜索
92-
(else
153+
(else
93154
(interactive-replace))))) ;; 情况 3:如果是 (#t #f),调用替换
94155

95156
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

0 commit comments

Comments
 (0)