В Сосульки есть общий способ сделать то, что вы хотите.
По умолчанию в минибуфере M -. привязан к команде, которая вставляет текст в (или около) точке в минибуфер (не вводит его или не делает с ним другое; просто вставляет его) ).
Вы можете, например, использовать M -: для оценки пола в Лиспе, а затем вы используете M -. для захвата пола в / около точке.
Если вы повторяете M -. , тогда он отбрасывает то, что просто схватил, захватывает какую-то другую вещь (текст) в / около точки и вставляет это. По умолчанию он проходит через эти вещи, в следующем порядке:
а. Символ Лисп или имя файла.
б. Активный регион (выделенный текст) или слово.
с. Самый ближайший список.
* * Д тысячу двадцать восемь. Следующий по величине список.
е. Следующий по величине список.
ф. Какой бы файл или URL-адрес не угадал функция ffap-guesser
.
г. Каким бы ни был URL-адрес, угадывается функция thing-at-point-url-at-point
.
Что это значит для вашего примера (+ (+ 1 2) (+ 100 (+ 100 100)))
?
Если точка находится перед, например, 1
от второй до последней 100
, то это полы, которые последовательно вставляются в минибуфер при повторном нажатии M -. , по порядку:
а. +
б. 100
с. (+ 100 100)
д. (+ 100 (+ 100 100))
е. (+ (+ 1 2) (+ 100 (+ 100 100)))
Таким образом, чтобы вставить самый большой из включенных списков, вы должны сделать M-: M-. M-. M-. M-. M -. , то есть пять раз M -. .
Для этого поведения, в частности для точного захвата списков, вам также понадобится библиотека Thing At Point + .