@@ -138,51 +138,33 @@ This hook is set to nil with each call to `ace-window'.")
138
138
(ace-jump-delete-overlay-in-search-tree ace-jump-search-tree)
139
139
(setq ace-jump-search-tree nil )))
140
140
141
- (defun aw--doit (function mode-line )
142
- " Select a window and call FUNCTION for it .
143
- FUNCTION should accept a single `aj-position' structure.
144
- Set mode line to MODE-LINE during the selection process. "
145
- ( let* ( (ace-jump-mode-scope aw-scope)
141
+ (defun aw--doit (mode-line )
142
+ " Return a selected other window .
143
+ Amend MODE-LINE to the mode line for the duration of the selection. "
144
+ ( let* ((start-window ( selected-window ))
145
+ (ace-jump-mode-scope aw-scope)
146
146
(next-window-scope
147
147
(cl-case aw-scope
148
148
('global 'visible )
149
149
('frame 'frame )))
150
150
(visual-area-list
151
- (sort (aw-list-visual-area) 'aw-visual-area< ))
152
- (visual-area-list
153
- (if (<= (length visual-area-list) 2 )
154
- visual-area-list
155
- (cl-remove-if
156
- (lambda (va )
157
- (let ((b (aj-visual-area-buffer va)))
158
- (with-current-buffer b
159
- (and buffer-read-only
160
- (= 0 (buffer-size b))))))
161
- visual-area-list))))
151
+ (cl-remove-if
152
+ (lambda (va )
153
+ (let ((b (aj-visual-area-buffer va))
154
+ (w (aj-visual-area-window va)))
155
+ (or (with-current-buffer b
156
+ (and buffer-read-only
157
+ (= 0 (buffer-size b))))
158
+ (aw-ignored-p w))))
159
+ (sort (aw-list-visual-area) 'aw-visual-area< ))))
162
160
(cl-case (length visual-area-list)
163
- (0
164
- (error " Nowhere to switch to " ))
161
+ (0 )
165
162
(1
166
- (if (aw-ignored-p (selected-window ))
167
- (other-window 1 )
168
- ; ; don't get stuck in an empty read-only buffer
169
- (select-window (aj-visual-area-window (car visual-area-list)))))
163
+ ; ; don't get stuck in an empty read-only buffer
164
+ (select-window (aj-visual-area-window (car visual-area-list))))
170
165
(2
171
- (if (aw-ignored-p (selected-window ))
172
- (other-window 1 )
173
- (let ((sw (selected-window ))
174
- (w (next-window nil nil next-window-scope)))
175
- (while (aw-ignored-p w)
176
- (select-window w)
177
- (setq w (next-window nil nil next-window-scope)))
178
- (select-window sw)
179
- (funcall function
180
- (make-aj-position
181
- :offset 0
182
- :visual-area (make-aj-visual-area
183
- :buffer (window-buffer w)
184
- :window w
185
- :frame (window-frame w)))))))
166
+ (select-window
167
+ (next-window nil nil next-window-scope)))
186
168
(t
187
169
(let ((candidate-list
188
170
(mapcar (lambda (va )
@@ -246,42 +228,44 @@ Set mode line to MODE-LINE during the selection process."
246
228
(ace-jump-done)
247
229
(ace-jump-push-mark)
248
230
(run-hooks 'ace-jump-mode-before-jump-hook )
249
- (funcall function aj-data))
231
+ (select-window (aj-position-window aj-data) ))
250
232
(throw 'done t ))
251
233
252
234
(t
253
235
(error " [AceJump] Internal error: tree node type is invalid " ))))))
254
- (aw--done)))))))
236
+ (aw--done)))))
237
+ (prog1 (selected-window )
238
+ (select-window start-window))))
255
239
256
240
; ; ——— Interactive —————————————————————————————————————————————————————————————
257
241
;;;### autoload
258
242
(defun ace-select-window ()
259
243
" Ace select window."
260
244
(interactive )
261
- (aw--doit #'aw-switch-to-window " Ace - Window" ))
245
+ (aw-switch-to-window
246
+ (aw--doit " Ace - Window" )))
262
247
263
248
;;;### autoload
264
249
(defun ace-delete-window ()
265
250
" Ace delete window."
266
251
(interactive )
267
- (aw--doit #'aw-delete-window " Ace - Delete Window" ))
252
+ (aw-delete-window
253
+ (aw--doit " Ace - Delete Window" )))
268
254
269
255
;;;### autoload
270
256
(defun ace-swap-window ()
271
257
" Ace swap window."
272
258
(interactive )
273
- (aw--doit #'aw-swap-window " Ace - Swap Window" ))
259
+ (aw-swap-window
260
+ (aw--doit " Ace - Swap Window" )))
274
261
275
262
;;;### autoload
276
263
(defun ace-maximize-window ()
277
264
" Ace maximize window."
278
265
(interactive )
279
- (aw--doit
280
- (lambda (aj )
281
- (let ((wnd (aj-position-window aj)))
282
- (select-window wnd)
283
- (delete-other-windows )))
284
- " Ace - Maximize Window" ))
266
+ (select-window
267
+ (aw--doit " Ace - Maximize Window" ))
268
+ (delete-other-windows ))
285
269
286
270
;;;### autoload
287
271
(defun ace-window (arg )
@@ -326,21 +310,19 @@ Windows are numbered top down, left to right."
326
310
((< (cadr e1) (cadr e2))
327
311
t ))))
328
312
329
- (defun aw-switch-to-window (aj-data )
330
- " Switch to the window of `aj-position' structure AJ-DATA."
331
- (let ((frame (aj-position-frame aj-data))
332
- (window (aj-position-window aj-data)))
313
+ (defun aw-switch-to-window (window )
314
+ " Switch to the window WINDOW."
315
+ (let ((frame (window-frame window)))
333
316
(when (and (frame-live-p frame)
334
317
(not (eq frame (selected-frame ))))
335
318
(select-frame-set-input-focus frame))
336
319
(if (window-live-p window)
337
320
(select-window window)
338
321
(error " Bad aj-data, aw-delete-window: %S " aj-data))))
339
322
340
- (defun aw-delete-window (aj-data )
341
- " Delete window of `aj-position' structure AJ-DATA."
342
- (let ((frame (aj-position-frame aj-data))
343
- (window (aj-position-window aj-data)))
323
+ (defun aw-delete-window (window )
324
+ " Delete window WINDOW."
325
+ (let ((frame (window-frame window)))
344
326
(when (and (frame-live-p frame)
345
327
(not (eq frame (selected-frame ))))
346
328
(select-frame-set-input-focus (window-frame window)))
@@ -350,17 +332,16 @@ Windows are numbered top down, left to right."
350
332
(delete-window window)
351
333
(error " Bad aj-data, aw-delete-window: %S " aj-data)))))
352
334
353
- (defun aw-swap-window (aj-data )
354
- " Swap buffers of current window and that of `aj-position' structure AJ-DATA ."
335
+ (defun aw-swap-window (window )
336
+ " Swap buffers of current window and WINDOW ."
355
337
(cl-labels ((swap-windows (window1 window2)
356
338
" Swap the buffers of WINDOW1 and WINDOW2."
357
339
(let ((buffer1 (window-buffer window1))
358
340
(buffer2 (window-buffer window2)))
359
341
(set-window-buffer window1 buffer2)
360
342
(set-window-buffer window2 buffer1)
361
343
(select-window window2))))
362
- (let ((frame (aj-position-frame aj-data))
363
- (window (aj-position-window aj-data))
344
+ (let ((frame (window-frame window))
364
345
(this-window (selected-window )))
365
346
(when (and (frame-live-p frame)
366
347
(not (eq frame (selected-frame ))))
0 commit comments