PG
Size: a a a
PG
PG
(setf=> (integer-at-point) #'1-)a
a
it-ах.PG
a
PG
a
a
(setf thing-at-point) в том, что иногда напишешь (setf (integer-at-point) "васян"), и это сработает, но васян не целое число, так что выглядит не очень. С другой стороны, может, хорошо, что эта запись привлечет внимание к типам в таких случаях.EZ
PG
PG
EZ
a
strict-setf, который типы чекает или warn'ит, но в елиспе и это тож как-то не принято.EZ
thing-at-point. Я хотел определить декремент целого числа под курсором (тоже странно,что его нет; я не потерял ли че из виду?), определил так
(defun decrement-integer-at-point ()
(interactive)
(asetf (integer-at-point) (1- it)))
(setf thing-at-point). Я определил так:
(defsetf thing-at-point (thing) (value)
`(let ((pair (bounds-of-thing-at-point ,thing)))
(replace-region-contents (car pair) (cdr pair)
(lambda () (ensure-string ,value)))))
ensure-string — что тоже странно)pair символ, его сначала нужно gensym сделать чтобы шадовинга не было, типа(defsetf thing-at-point (thing) (value)
(let ((pair (gensym "pair")))
`(let ((,pair (bounds-of-thing-at-point ,thing)))
(replace-region-contents (car ,pair) (cdr ,pair)
(lambda () (ensure-string ,value))))) )
a
pair символ, его сначала нужно gensym сделать чтобы шадовинга не было, типа(defsetf thing-at-point (thing) (value)
(let ((pair (gensym "pair")))
`(let ((,pair (bounds-of-thing-at-point ,thing)))
(replace-region-contents (car ,pair) (cdr ,pair)
(lambda () (ensure-string ,value))))) )
PG
PG
cl-destructuring-bind сделатьa
&gensym в defmacro.EZ
cl-destructuring-bind сделать