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
сделать