1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-21 23:50:36 -08:00

* lisp/progmodes/gud.el: Use lexical-binding.

Fixes: debbugs:19966

* lisp/emacs-lisp/gv.el (gv-ref): Warn about likely problematic cases.
This commit is contained in:
Stefan Monnier 2015-03-03 14:23:49 -05:00
parent cecf4afebb
commit 7133f262bb
3 changed files with 23 additions and 6 deletions

View file

@ -1,3 +1,9 @@
2015-03-03 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/gud.el: Use lexical-binding (bug#19966).
* emacs-lisp/gv.el (gv-ref): Warn about likely problematic cases.
2015-03-03 Daniel Colascione <dancol@dancol.org>
* emacs-lisp/generator.el: Make globals conform to elisp
@ -6,8 +12,8 @@
`cps-disable-atomic-optimization'.
(cps--gensym): New macro; replaces `cl-gensym' throughout.
(cps-generate-evaluator): Move the `iter-yield' local macro
definition here
(iter-defun, iter-lambda): from here.
definition here...
(iter-defun, iter-lambda): ...from here.
2015-03-03 Artur Malabarba <bruce.connor.am@gmail.com>

View file

@ -493,9 +493,20 @@ This is like the `&' operator of the C language.
Note: this only works reliably with lexical binding mode, except for very
simple PLACEs such as (function-symbol 'foo) which will also work in dynamic
binding mode."
(gv-letplace (getter setter) place
`(cons (lambda () ,getter)
(lambda (gv--val) ,(funcall setter 'gv--val)))))
(let ((code
(gv-letplace (getter setter) place
`(cons (lambda () ,getter)
(lambda (gv--val) ,(funcall setter 'gv--val))))))
(if (or lexical-binding
;; If `code' still starts with `cons' then presumably gv-letplace
;; did not add any new let-bindings, so the `lambda's don't capture
;; any new variables. As a consequence, the code probably works in
;; dynamic binding mode as well.
(eq (car-safe code) 'cons))
code
(macroexp--warn-and-return
"Use of gv-ref probably requires lexical-binding"
code))))
(defsubst gv-deref (ref)
"Dereference REF, returning the referenced value.

View file

@ -1,4 +1,4 @@
;;; gud.el --- Grand Unified Debugger mode for running GDB and other debuggers
;;; gud.el --- Grand Unified Debugger mode for running GDB and other debuggers -*- lexical-binding:t -*-
;; Copyright (C) 1992-1996, 1998, 2000-2015 Free Software Foundation,
;; Inc.