простой ответ установки 2 переменных на nil и 0 у меня не сработал, поэтому я написал 2 простые функции: одна просто разбивает окно на вертикальные буферы NX и открывает файлы с именем (например) file.1 file.1. 2 ... file.NX в каждом и другом делает то же самое, за исключением того, что делает это в 2D (строки NY по столбцам NX для открытия файлов f.1 f.2 ... f. [NX * NY]). Чтобы установить, добавьте этот код в .emacs:
(defun grid-files-h (nx wx pfx)
"Using dotimes, split the window into NX side-by-side buffers of width WX and load files starting with prefix PFX and ending in numbers 1 through NX"
(let (ox fn k) ; ox is not used, but fn is used to store the filename, and k to store the index string
(dotimes (x (- nx 1) ox) ; go through buffers, x goes from 0 to nx-2 and ox is not used here
; (print x)
(setq k (number-to-string (+ x 1) ) ) ; k is a string that goes from "1" to "nx-1"
; (print k)
(setq fn (concat pfx k) ) ; fn is filename - concatenate prefix with k
; (print fn)
(find-file fn) ; open the filename in current buffer
(split-window-horizontally wx) ; split window (current buffer gets wx-columns)
(other-window 1) ; switch to the next (right) buffer
)
(setq k (number-to-string nx )) ; last (rightmost) buffer gets the "nx" file
(setq fn (concat pfx k) ) ; fn = "pfx"+"nx"
(find-file fn ) ; open fn
(other-window 1) ; go back to the first buffer
)
)
(defun grid-files-sq (ny wy nx wx pfx)
"Using dotimes, split the window into NX columns of width WX and NY rows of height WY and load files starting with prefix PFX and ending in numbers 1 through NX*NY"
(let (oy ox fn k)
(dotimes (y ny oy) ; go through rows, y goes from 0 to ny-1 and oy is not used here
(split-window-vertically wy) ; create this row
(dotimes (x (- nx 1) ox) ; go through columns, x goes from 0 to nx-2 and ox is not used here
(setq k (number-to-string (+ 1 (+ x (* y nx) ) ) ) ) ; k must convert 2 indecies (x,y) into one linear one (like sub2ind in matlab)
(setq fn (concat pfx k) ) ; filename
(find-file fn ) ; open
(split-window-horizontally wx) ; create this column in this row (this "cell")
(other-window 1) ; go to the next buffer on the right
)
(setq k (number-to-string (+ nx (* y nx) ) ) ) ; rightmost buffer in this row needs a file too
(setq fn (concat pfx k) ) ; filename
(find-file fn ) ; open
(other-window 1) ; go to next row (one buffer down)
)
)
)
и затем, чтобы использовать вертикальный, я иду к * scratch * (C-x b *scratch* RET
, C-x 1
), набираю (grid-files-h 3 20 "file.")
затем C-x C-e
, или, если вы хотите проверить квадратный qrid, C-x 1
, введите (grid-files-sq 2 15 3 20 "f.")
, а затем C-x C-e
, и вы должны увидеть что-то вроде
Вероятно, это можно сделать лучше / эффективнее, но это начало, и оно делает то, что мне нужно (отображать кучу последовательно именуемых небольших файлов). Не стесняйтесь улучшать или повторно использовать.