Commit graph

38165 commits

Author SHA1 Message Date
Alan Mackenzie
326ffcce5f Allow line comments ending with escaped NL to be continued to the next line.
Use this in C, C++, and Objective C Modes.  Fixes bug#22246

* src/syntax.c (comment-end-can-be-escaped): New buffer local variable.
(forw-comment, back-comment): On encountering an end of comment character,
test whether it is escaped when `comment-end-can-be-escaped' is non-nil.

* doc/lispref/syntax.texi (Control Parsing): Describe
`comment-end-can-be-escaped'.

* etc/NEWS (Lisp Changes): Describe `comment-end-can-be-escaped'.

* lisp/progmodes/cc-langs.el: New c-lang-setvar `comment-end-can-be-escaped'.
2015-12-28 16:01:05 +00:00
Eli Zaretskii
3ad99c4674 Avoid leaving "ghost" of mouse pointer on MS-Windows
* src/w32term.c (frame_set_mouse_pixel_position):
* src/w32fns.c (Fw32_mouse_absolute_pixel_position): Momentarily
disable "mouse trails" when moving the mouse pointer.  (Bug#22247)
* src/w32term.c (frame_set_mouse_pixel_position): Include
w32common.h.
2015-12-27 20:52:21 +02:00
Wolfgang Jenkner
4b1436b702 Always define gmalloc etc. in src/gmalloc.c
This is a work-around to prevent the compiler from using semantic
knowledge about malloc for optimization purposes.  E.g., gcc 5.2
with -O2 replaces most of calloc's definition by a call to calloc;
see Bug#22085.
* src/gmalloc.c [!HYBRID_MALLOC] (malloc, realloc, calloc)
(aligned_alloc, free): Do not undef.  Instead, define these as
functions (perhaps renamed to gmalloc etc.) in terms of gmalloc etc.
2015-12-26 12:12:43 -08:00
Paul Eggert
b45828ee13 Propagate Bug#14412 fix to backtrace_eval_unrewind
* src/eval.c (unbind_to): Redo so that the FALLTHROUGH!! comment
becomes accurate again. This shouldn’t affect behavior.
(backtrace_eval_unrewind): Apply the recent unbind_to fix here, too.
2015-12-26 09:32:03 -08:00
Eli Zaretskii
23c3caf602 Avoid assertion violation in unbind_to
* src/eval.c (unbind_to) <SPECPDL_LET>: Avoid assertion violation
if we get here with an object that is not a symbol.  (Bug#14412)
2015-12-26 12:43:08 +02:00
Eli Zaretskii
94a3606243 Fix bootstrap broken by changes related to OS X file-name encoding
* lisp/international/ucs-normalize.el (eval-when-compile): Make
sure char-code-property-alist includes elements that allow access
to 'decomposition' and 'canonical-combining-class' Unicode
properties, as compiling ucs-normalize.el requires that.
* lisp/loadup.el (featurep 'ns): Load ucs-normalize and ns-win
only of charprop.el was already loaded.

* src/Makefile.in ($(lispsource)/international/ucs-normalize.elc):
New order-only dependency.
2015-12-25 13:23:17 +02:00
Anders Lindgren
3e7f6338d8 ; Re-enabled "File-name completion of non-ASCII characters on OS X (bug#22169)""
; This reverts commit d107eda498.

; A follow-up to this will be made to ucs-normalize.el etc. to ensure that building from scratch works.
2015-12-25 10:55:38 +01:00
Anders Lindgren
d107eda498 ; Revert "File-name completion of non-ASCII characters on OS X (bug#22169)"
; This reverts commit 0905307522.

; This caused a build from scratch to fail.
2015-12-24 09:50:26 +01:00
Paul Eggert
04dd5a502e Fix dired.c typo with ptrdiff_t vs Lisp_Object
* src/dired.c (file_name_completion): Don't assume Lisp_Object is
an integer type, fixing a problem introduced in the recent fix for
Bug#22169.
2015-12-23 11:49:22 -08:00
Eli Zaretskii
30cc4e4b12 Fix file-name completion on OS X
* src/dired.c (file_name_completion): Reject false matches due to
file-name-coding-systems that decompose characters when encoding
file names, by comparing decoded file names as well.  (Bug#22169)
(syms_of_dired) <Qdecomposed_characters>: New DEFSYM.

* lisp/international/ucs-normalize.el (utf-8-hfs): Give it a
non-nil 'decomposed-characters' property.
2015-12-23 19:34:00 +02:00
Anders Lindgren
0905307522 File-name completion of non-ASCII characters on OS X (bug#22169)
The coding system `utf-8-nfd', locally defined in ns-win.el,
didn't provide a :pre-write-conversion method, causing file name
completion of non-ASCII characters to fail.  Solved by using the
`utf-8-hfs' coding system provided by `ucs-normalize'.

* lisp/loadup.el: Load international/ucs-normalize (when building
for ns).

* lisp/term/ns-win.el (utf-8-nfd): Made `utf-8-nfd' as alias for
`utf-8-hfs' and removed the old implementation.  Set `utf-8-hfs'
as the file name coding system.

* src/nsfns.c (ns-convert-utf8-nfd-to-nfc): Removed.
2015-12-23 07:15:45 +01:00
Eli Zaretskii
5443f4cd58 ; Clarify comment added in previous commit. 2015-12-21 20:07:55 +02:00
Paul Eggert
57f222558d Add FIXME comment re stack overflow and modules 2015-12-21 02:54:51 -08:00
Paul Eggert
e9916d8880 Revert some recent emacs-module commentary
Most of the recently-added commentary was incorrect, due to the
possibility of stack overflow.
2015-12-20 17:44:51 -08:00
Paul Eggert
3864302c81 Port undo fixes to -fno-common
Port recent fix for Bug#21968 to platforms like 'gcc -fno-common'.
* src/keyboard.c, src/keyboard.h (point_before_last_command_or_undo)
(buffer_before_last_command_or_undo):
Declare in keyboard.h, and define in keyboard.c,
instead of assuming the traditional Unix relaxed ref-def linkage.
2015-12-20 17:27:54 -08:00
Philipp Stephani
4851616b4d Improve commentary for emacs-module.c
* src/lisp.h: Document emacs-module.c assumptions about EQ and NILP.
* src/emacs-module.c (module_non_local_exit_get): Document that we
cannot use the current implementation.
(module_is_not_nil, module_eq): Document assumptions about EQ and
NILP.
2015-12-20 21:10:03 +02:00
Eli Zaretskii
fb2eaf0ffc Fix vertical-motion in tabulated-list mode
* src/indent.c (Fvertical_motion): When moving from line beginning
to point under line truncation, assume overshoot by one line only
if point actually lies beyond the window's right margin.
(Bug#22194)
2015-12-18 12:26:17 +02:00
Paul Eggert
d8b4105705 Remove attempt to use C11 threads
C11 threads are not needed for Emacs now, and their use is causing
hassles on FreeBSD 10.x.  Problem reported by Ashish SHUKLA in:
http://lists.gnu.org/archive/html/emacs-devel/2015-12/msg00648.html
* configure.ac: Do not check for C11 threads. Remove unnecessary
fiddling with CPPFLAGS when configuring pthreads.
* src/emacs-module.c (main_thread, check_main_thread)
(module_init): Do not worry about C11 threads.
2015-12-15 23:10:48 -08:00
YAMAMOTO Mitsuharu
7024344084 Fix variable name typo in compute_tip_xy
* src/w32fns.c (compute_tip_xy):
* src/xfns.c (compute_tip_xy): Modify *root_x instead of *root_y
when `right' is integer.
2015-12-15 17:54:07 +09:00
Eli Zaretskii
3842f1f401 ; * src/fileio.c (Finsert_file_contents): Avoid compiler warning. 2015-12-14 17:55:02 +02:00
Eli Zaretskii
25e461c1c8 Fix visiting files with raw-text
* src/fileio.c (Finsert_file_contents): Fix setting buffer unibyte
when some stuff was actually read.  (Bug#22162)
2015-12-13 19:56:27 +02:00
Paul Eggert
09663d9b91 Fix performance regression with gcc -O0
This fixes the smaller performance hit that I noted in:
https://lists.gnu.org/archive/html/emacs-devel/2015-12/msg00357.html
* src/alloc.c (macro_XPNTR_OR_SYMBOL_OFFSET, macro_XPNTR):
* src/puresize.h (puresize_h_PURE_P)
(puresize_h_CHECK_IMPURE):
New macros, with the old contents of the functions.
* src/alloc.c (XPNTR_OR_SYMBOL_OFFSET, XPNTR):
* src/puresize.h (PURE_P, CHECK_IMPURE):
Use the new macros.  Also macros, if DEFINE_KEY_OPS_AS_MACROS.
* src/conf_post.h (ATTRIBUTE_UNUSED):
* src/lisp.h (DEFINE_KEY_OPS_AS_MACROS): New macros.
2015-12-12 19:28:53 -08:00
Martin Rudalics
06f00d39ff Fix frame height calculations with added menu bar on Windows (Bug#22105)
* doc/lispref/frames.texi (Parameter Access): Mention pitfalls
when simultaneously specifying multiple parameters for
`modify-frame-parameters' that all may change the frame's size.
* src/w32fns.c (x_set_menu_bar_lines): Don't set
windows_or_buffers_changed here.
(my_create_tip_window, Fx_show_tip): Call AdjustWindowRect
with third argument false.
* src/w32menu.c (set_frame_menubar): Set
windows_or_buffers_changed here.
* src/w32term.c (x_set_window_size): Determine third argument of
AdjustWindowRect from whether the frame has a menu bar and not
from whether it wants one.
2015-12-12 14:38:11 +01:00
Eli Zaretskii
0b7d6b026e Fix echo for "C-u"
* src/keyboard.c (command_loop_1): Undo last change.  It caused
duplicate echo of C-u.  (Bug#22107)
2015-12-12 10:05:26 +02:00
Eli Zaretskii
9d2b8e768f Fix 'this-command-keys' wrt prefix argument
* src/keyboard.c (command_loop_1): Restore the feature whereby C-u
was part of this-command-keys, but not of this-single-command-keys.
(Bug#22107)

* lisp/simple.el (internal-echo-keystrokes-prefix): Add
commentary about the function's return value.
2015-12-11 11:53:53 +02:00
Eli Zaretskii
1db9d8bd0f Clarify documentation of 'modify-frame-parameters'
* doc/lispref/frames.texi (Parameter Access): Clarify what "ignored
PARMs" mean for 'modify-frame-parameters'.

* src/frame.c (Fmodify_frame_parameters): Clarify what "ignored
PARMs" mean for this function.  (Bug#22104)
2015-12-11 10:46:18 +02:00
Eli Zaretskii
b3277c7d39 Fix setting buffer unibyte when reading from a device
* src/fileio.c (Finsert_file_contents): Call Fset_buffer_multibyte
to make a (possibly non-empty) buffer unibyte.  (Bug#22096)
2015-12-11 10:25:37 +02:00
Eli Zaretskii
d75849e937 Yet another fix for when point ends up in invisible text
* src/xdisp.c (redisplay_window): When someone forced
window-start, and honoring that failed to show the cursor, try
moving out of invisible text, before falling back to the middle of
the window.  (Bug#22098)
2015-12-09 20:03:54 +02:00
YAMAMOTO Mitsuharu
59d08e9898 Remove font workaround for limited outdated versions
* src/macfont.m (mac_font_descriptor_get_adjusted_weight): Remove
workaround for HiraginoSans-W7 on OS X 10.11 and 10.11.1.
2015-12-09 18:20:25 +09:00
Anders Lindgren
ae3057412a Don't add "." to load path (bug#21104)
When configured with --enable-locallisppath=no, which is the
default for OS X, the load-path incorrectly was populated with ".".

* src/lread.c (init_lread): Don't call `decode_env_path' when
PATH_SITELOADSEARCH is empty.
2015-12-09 06:35:12 +01:00
Paul Eggert
9b0ffdbadd Spelling fixes
* doc/misc/calc.texi (Predefined Units): Use the bland modern
scientific style for spelling the units “ampere” and
“angstrom” rather than the older style “Ampere” and
“Ångstrom”.  The latter spelling was wrong anyway (it should
have been “Ångström”).
* lisp/emacs-lisp/ert.el (ert--explain-equal-rec):
Fix misspelling of ‘atom’ in code.
2015-12-07 08:38:05 -08:00
Paul Eggert
b44caf951a Remove overenthusiastic eassert
* src/lisp.h (XSYMBOL): Remove eassert incorrectly added in
previous change.  It breaks on MS-Windows --with-wide-int.
Problem reported by Eli Zaretskii in:
http://lists.gnu.org/archive/html/emacs-devel/2015-12/msg00275.html
2015-12-06 15:07:40 -08:00
Paul Eggert
6aa37b26b8 Pacify gcc -Wparentheses
* src/xdisp.c (row_containing_pos): Reparenthesize.
2015-12-06 14:59:04 -08:00
Eli Zaretskii
cca5629f78 Fix cursor display when invisible text is at line beginning
* src/xdisp.c (redisplay_window): When scrolling fails to show
point, prefer using the desired matrix if possible for finding the
fallback glyph row for displaying the cursor.  (Bug#22098)
(row_containing_pos): Exit the loop as soon as we hit the first
disabled glyph row.  Otherwise we risk accessing garbled data and
departing to the no-no land.
2015-12-06 19:27:12 +02:00
Paul Eggert
302bbe00b3 Improve module interface when WIDE_EMACS_INT
* src/emacs-module.c (plain_values): New constant.
(module_nil): Now a constant.
(Finternal_module_call, value_to_lisp_bits, lisp_to_value_bits)
(syms_of_module): Use if, not #ifdef, so that both sides are
checked at compile-time, and so that GCC doesn’t complain
about an unused var in the typical case.  Also, depend on
plain_values, not on WIDE_EMACS_INT; the code shouldn’t assume
that WIDE_EMACS_INT implies !USE_LSB_TAG.
(value_to_lisp_bits, lisp_to_value_bits): New functions.
Sign-extend integers rather than zero-extending them, as small
negative integers are more likely.
(value_to_lisp, lisp_to_value): Rewrite in terms of the new *_bits
functions.
(HAVE_STRUCT_ATTRIBUTE_ALIGNED): Define to 0 if not already defined.
(mark_modules): Remove.  All uses removed.
(lisp_to_value): Don’t assume Fcons returns a pointer aligned
to GCALIGNMENT.
(syms_of_module): Check that module_nil converts to Qnil.
* src/lisp.h (lisp_h_XSYMBOL, XSYMBOL): Use signed conversion, since
we prefer signed to unsigned when either will do.
(TAG_PTR): Sign-extend pointers when USE_LSB_TAG, as this is
a bit better for emacs-module.c.
2015-12-06 09:09:58 -08:00
Phillip Lord
eaa1fd6dbf Externalize some symbols in undo-auto
* doc/lispref/text.texi: Update symbols.
 * lisp/simple.el (undo-auto--amalgamate,
   undo-auto--current-boundary-timer): Make symbols public.
 * src/cmds.c (Fself_insert_command,Fdelete_char): Call
   updated symbol.
2015-12-03 21:27:33 +00:00
Eli Zaretskii
36dbe6fc3e More emacs-module.c fixes for wide ints
* src/emacs-module.c (value_to_lisp) [WIDE_EMACS_INT]: Use
unsigned data types to manipulate pointers, to avoid sign
extension coming after us with a vengeance.

* modules/mod-test/test.el (mod-test-sum-test): Add tests for
Emacs with wide ints that verify integer values near the critical
value that requires us to switch to a cons cell.
2015-12-02 16:06:01 +02:00
Eli Zaretskii
bdebeb77a0 Fix emacs-module.c for wide ints
* src/emacs-module.c (lisp_to_value): Compare the produced value
with the original Lisp object, not with the one potentially
converted into a Lisp_Cons.  Fixes assertion violations when
working with integers larger than fit into a 32-bit value.

* modules/mod-test/test.el (mod-test-sum-test): Add tests for
large integers, to test --with-wide-int.
2015-12-01 20:34:12 +02:00
Andreas Schwab
407cde8355 * src/lread.c (syms_of_lread): Doc fix. 2015-12-01 11:42:49 +01:00
David Reitter
49689a415c Read frame_title_format from buffer-local variable for NS port
* nsfns.m (x_implicitly_set_name): Read frame-title-format and
icon-title-format variables from buffer in appropriate window.
(Bug#22048)
2015-11-30 21:01:06 -05:00
Aurélien Aptel
7210f5130a * src/emacs-module.h: Fix finalizer typedef for C++11
C++11 standard doesn't allow exception-specification in typedef.
The workaround is to declare a dummy function prototype and use
decltype on it.
2015-11-30 23:53:40 +01:00
Eli Zaretskii
ec62f2f5ad Fix last change
* src/emacs-module.c (lisp_to_value, value_to_lisp)
[WIDE_EMACS_INT]: Avoid compiler warnings.
2015-11-30 22:46:45 +02:00
Stefan Monnier
3eb93c07f7 Rely on conservative stack scanning to find "emacs_value"s
* src/emacs-module.c (struct emacs_value_tag)
(struct emacs_value_frame, struct emacs_value_storage): Remove.
(value_frame_size): Remove constant.
(struct emacs_env_private): Use Lisp_Object for non_local_exit info.
(lisp_to_value): Remove first arg.
(module_nil): New constant.
Use it instead of NULL when returning an emacs_value.
(module_make_function): Adjust to new calling convention of
Qinternal_module_call.
(DEFUN): Receive args in an array rather than a list.
Use SAFE_ALLOCA rather than xnmalloc.  Skip the lisp_to_value loop when
we don't have WIDE_EMACS_INT.  Adjust to new type of non_local_exit info.
(module_non_local_exit_signal_1, module_non_local_exit_throw_1):
Adjust to new type of non_local_exit info.
(ltv_mark) [WIDE_EMACS_INT]: New constant.
(value_to_lisp, lisp_to_value): Rewrite.
(initialize_frame, initialize_storage, finalize_storage): Remove functions.
(allocate_emacs_value): Remove function.
(mark_modules): Gut it.
(initialize_environment): Don't initialize storage any more.
Keep the actual env object on Vmodule_environments.
(finalize_environment): Don't finalize storage any more.
(syms_of_module): Initialize ltv_mark and module_nil.

* src/emacs-module.h (emacs_value): Make it more clear that this type
is really opaque, including the fact that NULL may not be valid.

* modules/mod-test/mod-test.c (Fmod_test_signal, Fmod_test_throw):
Don't assume that NULL is a valid emacs_value.
2015-11-30 14:34:42 -05:00
Martin Rudalics
10870c8544 Run `window-size-change-functions' also when reading from minibuffer
* src/xdisp.c (redisplay_internal): Run `window-size-change-functions'
also when reading from minibuffer.
2015-11-30 18:24:13 +01:00
Paul Eggert
36649e0150 Spelling and grammar fixes 2015-11-29 21:52:17 -08:00
Philipp Stephani
c217802b0f Simplify the prologue of emacs-module.c functions
* emacs-module.c (MODULE_FUNCTION_BEGIN): New macro.
(module_make_global_ref)
(module_free_global_ref, module_make_function, module_funcall)
(module_intern, module_type_of, module_extract_integer)
(module_make_integer, module_extract_float, module_make_float)
(module_copy_string_contents, module_make_string)
(module_make_user_ptr, module_get_user_ptr, module_set_user_ptr)
(module_get_user_finalizer, module_set_user_finalizer)
(module_vec_set, module_vec_get, module_vec_size): Use new helper
macro MODULE_FUNCTION_BEGIN.
2015-11-28 14:08:21 +02:00
Eli Zaretskii
a63d1eca8d Don't reject module calls with no arguments
* src/emacs-module.c (Finternal_module_call): Allow ARGLIST be nil.
2015-11-28 13:59:12 +02:00
Philipp Stephani
b527d609d9 Make module-call be visible from Lisp
* src/emacs-module.c (module_make_function): Use internal--module-call.
(Finternal_module_call): Renamed from Fmodule_call.  Add safety
checks.
(syms_of_module): DEFSYM save-value-p and save-pointer-p.  Do
defsubr internal--module-call.
2015-11-28 13:53:32 +02:00
Paul Eggert
f32c79dd0e Fix minor problems found by static checking
* src/undo.c (prepare_record): Add proper prototype for C.
2015-11-27 22:09:11 -08:00
Stefan Monnier
60d8c804cf * src/emacs-module.c (struct env_storage): Delete
(struct emacs_runtime_private): Keep an emacs_env instead.
(Fmodule_load, Fmodule_call): Declare emacs_env_private separately.
(initialize_environment): Split the arg in two.	 Adjust all callers.
Only store the private part in Vmodule_environments.
(finalize_environment): Change the arg to only be the private env.
Adjust all callers.
2015-11-27 15:18:29 -05:00