1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-27 07:41:28 -08:00
emacs/src
Noam Postavsky 227213164e Add lisp watchpoints
This allows calling a function whenever a symbol-value is changed.

* src/lisp.h (lisp_h_SYMBOL_TRAPPED_WRITE_P):
(SYMBOL_TRAPPED_WRITE_P): New function/macro.
(lisp_h_SYMBOL_CONSTANT_P): Check for SYMBOL_NOWRITE specifically.
(enum symbol_trapped_write): New enumeration.
(struct Lisp_Symbol): Rename field constant to trapped_write.
(make_symbol_constant): New function.

* src/data.c (Fadd_variable_watcher, Fremove_variable_watcher):
(set_symbol_trapped_write, restore_symbol_trapped_write):
(harmonize_variable_watchers, notify_variable_watchers): New functions.

* src/data.c (Fset_default): Call `notify_variable_watchers' for trapped
symbols.
(set_internal): Change bool argument BIND to 3-value enum and call
`notify_variable_watchers' for trapped symbols.

* src/data.c (syms_of_data):
* src/data.c (syms_of_data):
* src/font.c (syms_of_font):
* src/lread.c (intern_sym, init_obarray):
* src/buffer.c (syms_of_buffer): Use make_symbol_constant.

* src/alloc.c (init_symbol):
* src/bytecode.c (exec_byte_code): Use SYMBOL_TRAPPED_WRITE_P.
* src/data.c (Fmake_variable_buffer_local, Fmake_local_variable):
(Fmake_variable_frame_local):
* src/eval.c (Fdefvaralias, specbind): Refer to Lisp_Symbol's
trapped_write instead of constant.
(Ffuncall): Move subr calling code into separate function.
(funcall_subr): New function.
2016-12-02 20:25:14 -05:00
..
bitmaps
.dbxinit
.gdbinit Merge from origin/emacs-25 2016-10-23 02:43:16 -07:00
alloc.c Add lisp watchpoints 2016-12-02 20:25:14 -05:00
atimer.c Fix the MSDOS build 2016-04-30 13:45:33 +03:00
atimer.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
bidi.c Merge from origin/emacs-25 2016-08-05 14:09:09 -07:00
blockinput.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
buffer.c Add lisp watchpoints 2016-12-02 20:25:14 -05:00
buffer.h Merge from origin/emacs-25 2016-09-26 13:37:36 -07:00
bytecode.c Add lisp watchpoints 2016-12-02 20:25:14 -05:00
callint.c Restore 'command-debug-status' functionality 2016-10-04 17:34:51 +03:00
callproc.c Restore file descriptor limit in subprocesses 2016-11-06 22:56:36 -08:00
casefiddle.c * src/casefiddle.c (casify_word): Simplify. 2016-09-12 08:18:56 -07:00
casetab.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
category.c Document CATEGORY arg to modify-category-entry 2016-08-13 22:56:11 -04:00
category.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
ccl.c Merge from origin/emacs-25 2016-03-11 13:33:32 -08:00
ccl.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
ChangeLog.1 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.2 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.3 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.4 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.5 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.6 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.7 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.8 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.9 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.10 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.11 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ChangeLog.12 ; ChangeLog spelling fixes 2016-08-21 04:15:44 -07:00
ChangeLog.13 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
character.c Port to ISO/IEC TS 18661-1:2014 2016-09-13 15:31:04 -07:00
character.h Merge from origin/emacs-25 2016-09-26 13:37:36 -07:00
charset.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
charset.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
chartab.c Fix setting a range of char-table slots in a singular case 2016-06-19 18:25:17 +03:00
cm.c Replace IF_LINT by NONVOLATILE and UNINIT 2016-06-08 11:50:42 -07:00
cm.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
cmds.c Adjust match data before calling after-change-funs 2016-07-22 23:55:23 -04:00
coding.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
coding.h emacs_strerror cleanups 2016-06-11 23:49:00 -07:00
commands.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
composite.c Port to ISO/IEC TS 18661-1:2014 2016-09-13 15:31:04 -07:00
composite.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
conf_post.h Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
COPYING
cygw32.c Avoid compiler warnings 2016-05-28 13:56:54 -04:00
cygw32.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
data.c Add lisp watchpoints 2016-12-02 20:25:14 -05:00
dbusbind.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
decompress.c Rename C names to match Lisp symbols better 2016-03-27 15:53:34 -07:00
deps.mk Fix the MSDOS build 2016-04-30 13:45:33 +03:00
dired.c Merge from origin/emacs-25 2016-11-04 15:01:17 -07:00
dispextern.h * src/xdisp.c (block_buffer_flips, unblock_buffer_flips): Now static. 2016-11-20 16:59:24 -08:00
dispnew.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
disptab.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
doc.c Minor doc quoting fixes 2016-08-30 19:45:05 -07:00
doprnt.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
dosfns.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
dosfns.h Fix the MSDOS build 2016-04-30 13:45:33 +03:00
dynlib.c Fix compiler warnings in the MinGW build 2016-05-21 20:06:33 +03:00
dynlib.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
editfns.c Pacify --enable-gcc-warnings CANNOT_DUMP=yes 2016-11-20 13:25:45 -08:00
emacs-icon.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
emacs-module.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
emacs-module.h Merge from origin/emacs-25 2016-03-11 13:33:32 -08:00
emacs.c Fix another CANNOT_DUMP problem 2016-11-21 08:42:49 -08:00
emacsgtkfixed.c New macro GNUC_PREREQ for GCC version 2016-06-12 10:33:52 -07:00
emacsgtkfixed.h Port to GTK with strict C99 compiler 2016-03-17 23:45:23 -07:00
epaths.in Update copyright year to 2016 2016-01-01 01:34:24 -08:00
eval.c Add lisp watchpoints 2016-12-02 20:25:14 -05:00
fileio.c ; Spelling fixes 2016-11-19 14:58:05 -08:00
filelock.c Merge from origin/emacs-25 2016-10-23 02:43:17 -07:00
firstfile.c Fix compilation warnings on MS-Windows 2016-10-10 19:22:40 +03:00
floatfns.c Doc fixes for grammar and typos (bug#23746) 2016-06-13 18:08:22 +02:00
fns.c * src/fileio.c (Finsert_file_contents): Fix hook handling (bug#24340) 2016-10-03 09:47:46 -04:00
font.c Add lisp watchpoints 2016-12-02 20:25:14 -05:00
font.h Make struct font_drivers read-only 2016-12-01 21:48:30 -08:00
fontset.c Merge from origin/emacs-25 2016-10-10 07:39:05 -07:00
fontset.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
frame.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
frame.h Revert "Cleanup tooltips" 2016-07-12 15:27:25 -07:00
fringe.c Rename FACE_OPT_FROM_ID to FACE_FROM_ID_OR_NULL 2016-07-02 12:39:47 +03:00
ftcrfont.c Make struct font_drivers read-only 2016-12-01 21:48:30 -08:00
ftfont.c Make struct font_drivers read-only 2016-12-01 21:48:30 -08:00
ftfont.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
ftxfont.c Make struct font_drivers read-only 2016-12-01 21:48:30 -08:00
getpagesize.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
gfilenotify.c Prefer comments /* like this */ in C code 2016-11-05 20:42:10 -07:00
gmalloc.c Port --enable-gcc-warnings to Ubuntu 16.10 2016-11-13 12:18:33 -08:00
gnutls.c Fix GnuTLS includes 2016-08-03 14:21:21 -07:00
gnutls.h Improve --without-x GCC pacification 2016-06-22 03:05:22 +02:00
gtkutil.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
gtkutil.h Revert "Cleanup tooltips" 2016-07-12 15:27:25 -07:00
image.c Support for rawrgb images using imagemagick 2016-12-02 12:09:31 +02:00
indent.c Prefer now-standard int width macros 2016-09-15 15:55:30 -07:00
indent.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
inotify.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
insdel.c * src/fileio.c (Finsert_file_contents): Fix hook handling (bug#24340) 2016-10-03 09:47:46 -04:00
intervals.c Avoid assertion violations when using marker positions 2016-09-06 19:46:06 +03:00
intervals.h Yet another fix for copying properties by 'format' 2016-07-08 22:34:34 +03:00
keyboard.c Fix Condition in kbd_buffer_store_buffered_event (bug#19547). 2016-11-30 21:22:04 +01:00
keyboard.h Use DEV_TTY more consistently 2016-09-06 17:29:07 -07:00
keymap.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
keymap.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
kqueue.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
lastfile.c Make CANNOT_DUMP work better on GNU/Linux 2016-11-20 16:59:24 -08:00
lisp.h Add lisp watchpoints 2016-12-02 20:25:14 -05:00
lread.c Add lisp watchpoints 2016-12-02 20:25:14 -05:00
macfont.h Modernize usage of 'macOS' in doc and comments 2016-11-06 00:42:03 -07:00
macfont.m Make struct font_drivers read-only 2016-12-01 21:48:30 -08:00
macros.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
macros.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
macuvs.h Include sources used to create macuvs.h. 2014-05-26 08:48:28 -07:00
Makefile.in Add double-buffering support to reduce flicker 2016-10-28 19:21:39 -07:00
marker.c Avoid assertion violations when using marker positions 2016-09-06 19:46:06 +03:00
menu.c Port build to gcc -fcheck-pointer-bounds 2016-11-25 21:25:55 -08:00
menu.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
minibuf.c Fix test-completion with completion-regexp-list 2016-06-26 21:12:33 -04:00
msdos.c Bump Emacs version to 26.0.50 2016-10-01 11:14:05 +03:00
msdos.h Fix the MSDOS build 2016-04-30 13:45:33 +03:00
nsfns.m Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
nsfont.m Make struct font_drivers read-only 2016-12-01 21:48:30 -08:00
nsgui.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
nsimage.m Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
nsmenu.m Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
nsselect.m Modernize usage of 'macOS' in doc and comments 2016-11-06 00:42:03 -07:00
nsterm.h Fix problems found by static checking --with-ns 2016-09-29 20:13:40 -07:00
nsterm.m Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
print.c Avoid aborts in GC due to abort_on_gc 2016-09-14 20:41:04 +03:00
process.c ; Spelling fixes 2016-11-19 14:58:05 -08:00
process.h Restore file descriptor limit in subprocesses 2016-11-06 22:56:36 -08:00
profiler.c Fix compiler warnings in the MinGW build 2016-05-21 20:06:33 +03:00
puresize.h * src/puresize.h (BASE_PURESIZE): Increase it some more. 2016-05-27 18:12:08 -07:00
ralloc.c Port January __morecore changes to AIX 7.1 2016-09-17 15:06:55 -07:00
README Update copyright year to 2016 2016-01-01 01:34:24 -08:00
regex.c Don't access pointers to freed storage in regex.c 2016-11-26 00:20:26 -08:00
regex.h Merge from origin/emacs-25 2016-11-04 15:01:17 -07:00
region-cache.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
region-cache.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
scroll.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
search.c Merge from origin/emacs-25 2016-11-04 15:02:03 -07:00
sheap.c Merge from origin/emacs-25 2016-03-11 13:33:32 -08:00
sheap.h Double static heap size. 2016-02-01 08:50:10 -08:00
sound.c emacs_strerror cleanups 2016-06-11 23:49:00 -07:00
syntax.c Handle chars of syntax word which are also flagged as comment delimiters 2016-10-30 17:29:52 +00:00
syntax.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
sysdep.c Fix type typo on Solaris 2016-12-01 22:45:38 -08:00
sysselect.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
syssignal.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
sysstdio.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
systime.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
systty.h Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
syswait.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
term.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
termcap.c Update copyright year to 2016 2016-01-01 01:34:24 -08:00
termchar.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
termhooks.h Add double-buffering support to reduce flicker 2016-10-28 19:21:39 -07:00
terminal.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
terminfo.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
termopts.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
textprop.c Yet another fix for copying properties by 'format' 2016-07-08 22:34:34 +03:00
tparam.c Update copyright year to 2016 2016-01-01 01:34:24 -08:00
tparam.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
undo.c Fix missing point information in undo 2016-07-05 09:27:59 +01:00
unexaix.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
unexcoff.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
unexcw.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
unexec.h Make src headers idempotent and standalone 2015-10-16 14:56:11 -07:00
unexelf.c Port to FreeBSD 11 AMD 2016-11-08 09:49:27 -08:00
unexhp9k800.c Consistently use min and max macros from lisp.h. 2014-10-03 08:35:10 +04:00
unexmacosx.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
unexsol.c Include-file cleanup for src directory 2015-10-20 18:35:53 -07:00
unexw32.c Fix compiler warnings in the MinGW build 2016-05-21 20:06:33 +03:00
vm-limit.c Port January __morecore changes to AIX 7.1 2016-09-17 15:06:55 -07:00
w16select.c Fix the MSDOS build 2016-04-30 13:45:33 +03:00
w32.c Upcase Path and ComSpec in process-environment 2016-11-28 17:44:39 -05:00
w32.h Fix compiler warnings in the MinGW build 2016-05-21 20:06:33 +03:00
w32common.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
w32console.c Rename FACE_OPT_FROM_ID to FACE_FROM_ID_OR_NULL 2016-07-02 12:39:47 +03:00
w32fns.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
w32font.c * src/lisp.h (LISP_INITIALLY_ZERO): Remove. 2016-12-01 00:34:38 -08:00
w32font.h Fix compiler warnings in the MinGW build 2016-05-21 20:06:33 +03:00
w32gui.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
w32heap.c Implement getrlimit and setrlimit for MS-Windows 2016-11-19 12:17:23 +02:00
w32heap.h Fix compiler warnings in the MinGW build 2016-05-21 20:06:33 +03:00
w32inevt.c Improve w32notify notifications 2016-03-19 14:44:53 +02:00
w32inevt.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
w32menu.c ‘signal’ no longer returns 2016-07-25 00:38:34 +02:00
w32notify.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
w32proc.c Support SIGTRAP in kill emulation on Windows 2016-10-08 16:52:40 +03:00
w32reg.c Fix compiler warnings in the MinGW build 2016-05-21 20:06:33 +03:00
w32select.c Support 'TARGETS' in clipboard selections on MS-Windows 2016-11-01 18:04:07 +02:00
w32select.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
w32term.c Fix redrawing non-selected frame after resize on MS-Windows 2016-11-20 19:28:37 +02:00
w32term.h Unbreak MS-Windows build 2016-10-29 10:40:38 +03:00
w32uniscribe.c * src/lisp.h (LISP_INITIALLY_ZERO): Remove. 2016-12-01 00:34:38 -08:00
w32xfns.c Fix compilation of Cygwin w32 port 2016-04-02 12:39:44 +03:00
widget.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
widget.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
widgetprv.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
window.c Fix frame focus redirection with shared minibuffer windows (Bug#24500) 2016-10-17 10:52:01 +02:00
window.h Merge from origin/emacs-25 2016-09-26 13:32:28 -07:00
xdisp.c * src/xdisp.c (block_buffer_flips, unblock_buffer_flips): Now static. 2016-11-20 16:59:24 -08:00
xfaces.c Add double-buffering support to reduce flicker 2016-10-28 19:21:39 -07:00
xfns.c Add double-buffering support to reduce flicker 2016-10-28 19:21:39 -07:00
xfont.c Make struct font_drivers read-only 2016-12-01 21:48:30 -08:00
xftfont.c Make struct font_drivers read-only 2016-12-01 21:48:30 -08:00
xgselect.c Limit <config.h>’s includes 2016-09-30 12:38:52 -07:00
xgselect.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
xmenu.c ‘signal’ no longer returns 2016-07-25 00:38:34 +02:00
xml.c Merge from origin/emacs-25 2016-10-25 12:50:30 -07:00
xrdb.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
xselect.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
xsettings.c Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
xsettings.h Rework C source files to avoid ^( 2016-03-10 07:59:19 -08:00
xsmfns.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
xterm.c Merge from origin/emacs-25 2016-11-19 14:31:05 -08:00
xterm.h Add double-buffering support to reduce flicker 2016-10-28 19:21:39 -07:00
xwidget.c Prefer comments /* like this */ in C code 2016-11-05 20:45:17 -07:00
xwidget.h Remove scrolled window container around WebKit widget 2016-10-25 23:07:13 -07:00

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Copyright (C) 2001-2016 Free Software Foundation, Inc.
See the end of the file for license conditions.


This directory contains the source files for the C component of GNU Emacs.
Nothing in this directory is needed for using Emacs once it is built
and installed, if the dumped Emacs is copied elsewhere.

See the files ../README and then ../INSTALL for installation instructions.

The file 'Makefile.in' is used as a template by the script
'../configure' to produce 'Makefile'.  This is the file which actually
controls the compilation of Emacs C source files.  All of this should
work transparently; you should only need to change to the parent
directory, run './configure', and then run 'make'.

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.