summaryrefslogtreecommitdiff
path: root/src/marker.c
AgeCommit message (Collapse)Author
2026-01-01; Add 2026 to copyright years.Sean Whitton
2025-01-01Update copyright year to 2025Paul Eggert
Run "TZ=UTC0 admin/update-copyright".
2024-07-02(buf_*pos_to_*pos): Fix minor off-by oneStefan Monnier
* src/marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos): Slightly restructure the markers loop so we check `distance` also before "consider"ing the first marker.
2024-06-27(buf_bytepos_to_charpos): Fix mixup introduced in commit b300052fb4efStefan Monnier
* src/marker.c (buf_bytepos_to_charpos): Don't compare byte-positions with char-positions.
2024-05-09Improve static checking when using upcoming GCC 13.3Paul Eggert
* src/lisp.h: In GCC 13.3 and later, do not ignore -Wanalyzer-allocation-size. * src/marker.c: In GCC 13.3 and later, do not ignore -Wanalyzer-deref-before-check.
2024-03-04Fix 'set-window-configuration' and 'window-state-put'Martin Rudalics
Fix some bugs with 'window-state-put' (Bug#69093). Add new hook 'window-kept-windows-functions' (Bug#68235). * doc/lispref/windows.texi (Window Configurations): Mention 'window-kept-windows-functions'. (Window Hooks): Describe new abnormal hook 'window-kept-windows-functions'. * src/marker.c (Fmarker_last_position): New function to return the last position of a marker even if its buffer is now dead. * src/window.c (Fset_window_configuration): If 'window-kept-windows-functions' is non-nil, do not delete any window whose buffer is now dead but remember all such windows in a list to pass to 'window-kept-windows-functions'. Run 'window-kept-windows-functions' if it is non-nil. (Vwindow_kept_windows_functions): New abnormal hook run by Fset_window_configuration and 'window-state-put' with two arguments - the frame whose configuration is restored and a list of entries for each window whose buffer was found dead during restoration. Each entry is a list of four elements, the window, the dead buffer, and the last know positions of the start and point of that window. * lisp/window.el (window-state-put-kept-windows) (window-state-put-selected-window): New variables. (window--state-put-2): Make sure buffer is live before restoring its state. Set 'window-state-put-selected-window' to state's selected window. If 'window-kept-windows-functions' is non-nil, do not delete any windows whose buffer is found dead but remember all such windows in a list to pass to 'window-kept-windows-functions'. (window-state-put): Run 'window-kept-windows-functions' if it is non-nil. Select window recorded in 'window-state-put-selected-window'.
2024-02-18Use -Wanalyzer-deref-before-check in GCC 14Paul Eggert
* src/marker.c: Work around GCC bug 113253 only if GCC 13. The GCC bug reportedly will be fixed in GCC 14.
2024-01-06Pacify Ubuntu GCC 13.2 in set_marker_internalPaul Eggert
* src/marker.c (set_marker_internal): Ignore -Wanalyzer-deref-before-check, to work around GCC bug 113253.
2024-01-02Merge from savannah/emacs-29Po Lu
dc4e6b13296 ; Update copyright years in more files 64b37776318 ; Run set-copyright from admin.el 8e1c56ae467 ; Add 2024 to copyright years # Conflicts: # doc/misc/modus-themes.org # doc/misc/texinfo.tex # etc/NEWS # etc/refcards/ru-refcard.tex # etc/themes/modus-operandi-theme.el # etc/themes/modus-themes.el # etc/themes/modus-vivendi-theme.el # lib/alloca.in.h # lib/binary-io.h # lib/c-ctype.h # lib/c-strcasecmp.c # lib/c-strncasecmp.c # lib/careadlinkat.c # lib/cloexec.c # lib/close-stream.c # lib/diffseq.h # lib/dup2.c # lib/filemode.h # lib/fpending.c # lib/fpending.h # lib/fsusage.c # lib/getgroups.c # lib/getloadavg.c # lib/gettext.h # lib/gettime.c # lib/gettimeofday.c # lib/group-member.c # lib/malloc.c # lib/md5-stream.c # lib/md5.c # lib/md5.h # lib/memmem.c # lib/memrchr.c # lib/nanosleep.c # lib/save-cwd.h # lib/sha1.c # lib/sig2str.c # lib/stdlib.in.h # lib/strtoimax.c # lib/strtol.c # lib/strtoll.c # lib/time_r.c # lib/xalloc-oversized.h # lisp/auth-source-pass.el # lisp/emacs-lisp/lisp-mnt.el # lisp/emacs-lisp/timer.el # lisp/info-look.el # lisp/jit-lock.el # lisp/loadhist.el # lisp/mail/rmail.el # lisp/net/ntlm.el # lisp/net/webjump.el # lisp/progmodes/asm-mode.el # lisp/progmodes/project.el # lisp/progmodes/sh-script.el # lisp/textmodes/flyspell.el # lisp/textmodes/reftex-toc.el # lisp/textmodes/reftex.el # lisp/textmodes/tex-mode.el # lisp/url/url-gw.el # m4/alloca.m4 # m4/clock_time.m4 # m4/d-type.m4 # m4/dirent_h.m4 # m4/dup2.m4 # m4/euidaccess.m4 # m4/fchmodat.m4 # m4/filemode.m4 # m4/fsusage.m4 # m4/getgroups.m4 # m4/getloadavg.m4 # m4/getrandom.m4 # m4/gettime.m4 # m4/gettimeofday.m4 # m4/gnulib-common.m4 # m4/group-member.m4 # m4/inttypes.m4 # m4/malloc.m4 # m4/manywarnings.m4 # m4/mempcpy.m4 # m4/memrchr.m4 # m4/mkostemp.m4 # m4/mktime.m4 # m4/nproc.m4 # m4/nstrftime.m4 # m4/pathmax.m4 # m4/pipe2.m4 # m4/pselect.m4 # m4/pthread_sigmask.m4 # m4/readlink.m4 # m4/realloc.m4 # m4/sig2str.m4 # m4/ssize_t.m4 # m4/stat-time.m4 # m4/stddef_h.m4 # m4/stdint.m4 # m4/stdio_h.m4 # m4/stdlib_h.m4 # m4/stpcpy.m4 # m4/strnlen.m4 # m4/strtoimax.m4 # m4/strtoll.m4 # m4/time_h.m4 # m4/timegm.m4 # m4/timer_time.m4 # m4/timespec.m4 # m4/unistd_h.m4 # m4/warnings.m4 # nt/configure.bat # nt/preprep.c # test/lisp/register-tests.el
2024-01-02; Add 2024 to copyright yearsPo Lu
2023-02-15Update Android portPo Lu
* doc/emacs/input.texi (On-Screen Keyboards): * doc/lispref/commands.texi (Misc Events): Improve documentation of text conversion stuff. * java/org/gnu/emacs/EmacsInputConnection.java (beginBatchEdit) (endBatchEdit, commitCompletion, commitText, deleteSurroundingText) (finishComposingText, getSelectedText, getTextAfterCursor) (EmacsInputConnection, setComposingRegion, performEditorAction) (getExtractedText): Condition debug code on DEBUG_IC. * java/org/gnu/emacs/EmacsService.java (EmacsService, updateIC): Likewise. * lisp/bindings.el (global-map): * lisp/electric.el (global-map): Make `text-conversion' `analyze-text-conversion'. * lisp/progmodes/prog-mode.el (prog-mode): Enable text conversion in input methods. * lisp/simple.el (analyze-text-conversion): New function. * lisp/textmodes/text-mode.el (text-conversion-style) (text-mode): Likewise. * src/androidterm.c (android_handle_ime_event): Handle set_point_and_mark. (android_sync_edit): Give Emacs 100 ms instead. (android_perform_conversion_query): Skip the active region, not the conversion region. (getSelectedText): Implement properly. (android_update_selection): Expose mark to input methods. (android_reset_conversion): Handle `text-conversion-style'. * src/buffer.c (init_buffer_once, syms_of_buffer): Add buffer local variable `text-conversion-style'. * src/buffer.h (struct buffer, bset_text_conversion_style): New fields. * src/emacs.c (android_emacs_init): Call syms_of_textconv. * src/frame.h (enum text_conversion_operation): Rename TEXTCONV_SET_POINT. * src/lisp.h: Export syms_of_textconv. * src/marker.c (set_marker_internal): Force redisplay when the mark is set and the buffer is visible on builds that use text conversion. Explain why. * src/textconv.c (copy_buffer): Fix copying past gap. (get_mark): New function. (textconv_query): Implement new flag. (sync_overlay): New function. Display conversion text in an overlay. (record_buffer_change, really_commit_text) (really_set_composing_text, really_set_composing_region) (really_delete_surrounding_text, really_set_point) (handle_pending_conversion_events_1, decrement_inside) (handle_pending_conversion_events, textconv_set_point) (get_extracted_text, register_textconv_interface): Various fixes and improvements. * src/textconv.h (struct textconv_interface): Update documentation. * src/window.h (GCALIGNED_STRUCT): New field `prev_mark'. * src/xdisp.c (mark_window_display_accurate_1): Handle prev_mark.
2023-01-01; Add 2023 to copyright years.Eli Zaretskii
2022-09-09Delete many items obsolete since 24.3Stefan Kangas
* lisp/allout.el (allout-exposure-change-hook) (allout-structure-added-hook, allout-structure-deleted-hook) (allout-structure-shifted-hook): * lisp/arc-mode.el (archive-extract-hooks): * lisp/buff-menu.el (Buffer-menu-buffer+size-width): * lisp/calendar/timeclock.el (timeclock-modeline-display) (timeclock-modeline-display, timeclock-update-modeline): * lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym-function-arglist): * lisp/cedet/semantic/db-file.el (semanticdb-save-database-hooks): * lisp/cedet/semantic/edit.el (semantic-change-hooks) (semantic-edits-new-change-hooks) (semantic-edits-delete-change-hooks) (semantic-edits-reparse-change-hooks): * lisp/cedet/semantic/lex.el (semantic-lex-reset-hooks): * lisp/comint.el (comint--unquote&expand-filename) (comint-unquote-filename): * lisp/custom.el (user-variable-p): * lisp/dired.el (dired-shrink-to-fit, dired-pop-to-buffer) (dired-sort-set-modeline): * lisp/ebuff-menu.el (Electric-buffer-menu-mode): * lisp/emacs-lisp/byte-run.el (macro-declaration-function): * lisp/emacs-lisp/checkdoc.el (custom-print-functions) (checkdoc-comment-style-hooks): * lisp/emacs-lisp/cl-lib.el (custom-print-functions): * lisp/emacs-lisp/edebug.el (gud-inhibit-global-bindings): * lisp/erc/erc-dcc.el (erc-dcc-chat-filter-hook): * lisp/eshell/esh-mode.el (eshell-status-in-modeline): * lisp/eshell/eshell.el (eshell-add-to-window-buffer-names) (eshell-remove-from-window-buffer-names): * lisp/faces.el (set-face-underline-p, font-list-limit): * lisp/files.el (automount-dir-prefix, toggle-read-only): * lisp/filesets.el (filesets-cache-fill-content-hooks): * lisp/frame.el (automatic-hscrolling): * lisp/generic-x.el (javascript-generic-mode) (javascript-generic-mode-hook): * lisp/gnus/gnus-start.el (gnus-subscribe-newsgroup-hooks): * lisp/gnus/nndiary.el (nndiary-request-create-group-hooks) (nndiary-request-update-info-hooks) (nndiary-request-accept-article-hooks): * lisp/htmlfontify.el (hfy-post-html-hooks): * lisp/international/mule-cmds.el (inactivate-current-input-method-function) (inactivate-input-method, input-method-inactivate-hook) (ucs-insert): * lisp/international/quail.el (quail-inactivate) (quail-inactivate-hook): * lisp/international/robin.el (robin-inactivate) (robin-inactivate-hook): * lisp/leim/quail/hangul.el (hangul-input-method-inactivate): * lisp/leim/quail/uni-input.el (ucs-input-inactivate): * lisp/mail/emacsbug.el (report-emacs-bug-info): * lisp/mh-e/mh-e.el (mh-kill-folder-suppress-prompt-hooks): * lisp/mpc.el (mpc-string-prefix-p): * lisp/net/rcirc.el (rcirc-print-hooks, rcirc-sentinel-hooks) (rcirc-receive-message-hooks, rcirc-activity-hooks): * lisp/obsolete/crisp.el (crisp-mode-modeline-string): * lisp/pcomplete.el (pcomplete-arg-quote-list) (pcomplete-quote-argument): * lisp/progmodes/cc-mode.el (c-prepare-bug-report-hooks): * lisp/progmodes/python.el (python-info-ppss-context) (python-info-ppss-context-type) (python-info-ppss-comment-or-string-p, python-indent) (python-guess-indent, python-buffer, python-preoutput-result) (python-proc, python-send-receive, python-send-string) (python-use-skeletons): * lisp/progmodes/sh-script.el (sh-maybe-here-document): * lisp/replace.el (query-replace-interactive): * lisp/strokes.el (strokes-modeline-string): * lisp/subr.el (redraw-modeline): * lisp/term.el (term-default-fg-color, term-default-bg-color): * lisp/textmodes/tex-mode.el (latex-string-prefix-p) (tex-string-prefix-p): * lisp/url/url-parse.el (url-recreate-url-attributes): * lisp/vc/add-log.el (change-log-acknowledgement): * lisp/vc/ediff-wind.el (ediff-choose-window-setup-function-automatically): * lisp/vc/pcvs-util.el (cvs-string-prefix-p): * lisp/vc/vc.el (vc-string-prefix-p): * lisp/window.el (display-buffer-function): * lisp/winner.el (winner-mode-leave-hook): Remove many functions and variables obsolete since 24.3. * lisp/buff-menu.el (list-buffers--refresh): * lisp/dired.el (dired-mode-map): * lisp/files.el (abbreviate-file-name): * lisp/generic-x.el (generic-default-modes): * lisp/mh-e/mh-funcs.el (mh-kill-folder): * lisp/progmodes/hideif.el (hide-ifdef-mode-submap): * lisp/replace.el (query-replace-read-from): * lisp/term.el (term): * lisp/window.el (display-buffer): Don't use above deleted functions and variables. * src/marker.c (Fbuffer_has_markers_at): Delete DEFUN obsolete since 24.3. (syms_of_marker) <Sbuffer_has_markers_at>: Delete defsubr. * lisp/subr.el (buffer-has-markers-at): Remove obsoletion of above deleted DEFUN. * etc/TODO: Doc fix; don't mention above deleted function. * admin/cus-test.el (cus-test-get-options): * lisp/pcomplete.el: Doc fixes; don't mention removed items. ; * etc/NEWS: List removed items.
2022-08-02* src/xdisp.c (redisplay_window): Use BEG rather than hard coding 1Stefan Monnier
2022-01-01; Add 2022 to copyright years.Eli Zaretskii
2021-03-01Clean up obsolete commentMatt Armstrong
* src/marker.c (unchain_marker): Clean up obsolete comment (bug#46836). Commit cf3164523b (* src/alloc.c: Avoid O(N²) complexity when unchaining markers (bug#24548)., 2018-03-23) removed the call from GC into unchain_marker, so there is no need to warn about it.
2021-01-01Update copyright year to 2021Paul Eggert
Run "TZ=UTC0 admin/update-copyright".
2020-04-17Prefer more inline functions in character.hPaul Eggert
* src/buffer.h (fetch_char_advance, fetch_char_advance_no_check) (buf_next_char_len, next_char_len, buf_prev_char_len) (prev_char_len, inc_both, dec_both): New inline functions, replacing the old character.h macros FETCH_CHAR_ADVANCE, FETCH_CHAR_ADVANCE_NO_CHECK, BUF_INC_POS, INC_POS, BUF_DEC_POS, DEC_POS, INC_BOTH, DEC_BOTH respectively. All callers changed. These new functions all assume buffer primitives and so need to be here rather than in character.h. * src/casefiddle.c (make_char_unibyte): New static function, replacing the old MAKE_CHAR_UNIBYTE macro. All callers changed. (do_casify_unibyte_string): Use SINGLE_BYTE_CHAR_P instead of open-coding it. * src/ccl.c (GET_TRANSLATION_TABLE): New static function, replacing the old macro of the same name. * src/character.c (string_char): Omit 2nd arg. 3rd arg can no longer be NULL. All callers changed. * src/character.h (SINGLE_BYTE_CHAR_P): Move up. (MAKE_CHAR_UNIBYTE, MAKE_CHAR_MULTIBYTE, PREV_CHAR_BOUNDARY) (STRING_CHAR_AND_LENGTH, STRING_CHAR_ADVANCE) (FETCH_STRING_CHAR_ADVANCE) (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE) (FETCH_STRING_CHAR_ADVANCE_NO_CHECK, FETCH_CHAR_ADVANCE) (FETCH_CHAR_ADVANCE_NO_CHECK, INC_POS, DEC_POS, INC_BOTH) (DEC_BOTH, BUF_INC_POS, BUF_DEC_POS): Remove. (make_char_multibyte): New static function, replacing the old macro MAKE_CHAR_MULTIBYTE. All callers changed. (CHAR_STRING_ADVANCE): Remove; all callers changed to use CHAR_STRING. (NEXT_CHAR_BOUNDARY): Remove; it was unused. (raw_prev_char_len): New inline function, replacing the old PREV_CHAR_BOUNDARY macro. All callers changed. (string_char_and_length): New inline function, replacing the old STRING_CHAR_AND_LENGTH macro. All callers changed. (STRING_CHAR): Rewrite in terms of string_char_and_length. (string_char_advance): New inline function, replacing the old STRING_CHAR_ADVANCE macro. All callers changed. (fetch_string_char_advance): New inline function, replacing the old FETCH_STRING_CHAR_ADVANCE macro. All callers changed. (fetch_string_char_as_multibyte_advance): New inline function, replacing the old FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE macro. All callers changed. (fetch_string_char_advance_no_check): New inline function, replacing the old FETCH_STRING_CHAR_ADVANCE_NO_CHECK macro. All callers changed. * src/regex-emacs.c (HEAD_ADDR_VSTRING): Remove; no longer used. * src/syntax.c (scan_lists): Use dec_bytepos instead of open-coding it. * src/xdisp.c (string_char_and_length): Rename from string_char_and_length to avoid name conflict with new function in character.h. All callers changed.
2020-01-01Update copyright year to 2020Paul Eggert
Run "TZ=UTC0 admin/update-copyright $(git ls-files)".
2019-12-06Fix set-marker when the position is larger than the largest bufferEli Zaretskii
* src/marker.c (set_marker_internal): Handle the case where POSITION is beyond PTRDIFF_MAX, which can happen if Emacs was built --with-wide-int. Bug uncovered by the recently added overlay tests.
2019-05-07* src/marker.c (buf_bytepos_to_charpos): Re-add the CHAR_HEAD_P assertionStefan Monnier
This assertion was removed in 1c349c62305d432abf0fa2b6e3f5d754fe4cab79 because the assumption was invalid during set_intervals_multibyte_1. So we change set_intervals_multibyte_1 to solve the problem in the same way as in the rest of Fset_buffer_multibyte, which actually simplifies the code. * src/buffer.c (advance_to_char_boundary): Not static any more. * src/buffer.h (advance_to_char_boundary): Add prototype. * src/intervals.c (set_intervals_multibyte_1): Use it.
2019-03-05Remove unreliable assertion in buf_bytepos_to_charposEli Zaretskii
* src/marker.c (buf_bytepos_to_charpos): Remove the assertion regarding bytepos always at the head byte of a multibyte sequence. For the reasons, see http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00100.html http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00102.html
2019-03-04Avoid assertion violations in buf_bytepos_to_charposEli Zaretskii
* src/marker.c (buf_bytepos_to_charpos): Disable the assertion regarding bytepos always at the head byte of a multibyte sequence.
2019-03-02Check by eassert that a bytepos argument isn't in the middle of a characterAlan Mackenzie
* src/marker.c (buf_bytepos_to_charpos): Add an eassert to check that the parameter bytepos is at the beginning of a character or EOB.
2019-01-31Widen modiff counts to avoid wraparoundPaul Eggert
Widen modification counts to at least 64 bits, to make wraparound practically impossible. * doc/lispref/buffers.texi (Buffer Modification): Don’t say the modification-count can wrap around. * src/buffer.c (Frestore_buffer_modified_p, Fbuffer_swap_text) (modify_overlay): * src/insdel.c (insert_1_both, insert_from_string_1) (insert_from_gap, insert_from_buffer_1) (adjust_after_replace, replace_range, replace_range_2) (del_range_2, modify_text): * src/textprop.c (modify_text_properties): Use modiff_incr instead of incrementing directly. (Fbuffer_modified_tick, Fbuffer_chars_modified_tick): Don’t assume modification counts fit into fixnums. * src/buffer.h (struct buffer_text, struct buffer): * src/cmds.c (internal_self_insert): * src/fileio.c (Finsert_file_contents): * src/indent.c (last_known_column_modified): * src/keyboard.c (command_loop_1): * src/marker.c (cached_modiff): * src/syntax.c (find_start_modiff, parse_sexp_propertize) (find_defun_start): * src/window.h (struct window): Use modiff_count for modification counts. * src/editfns.c (Fsubst_char_in_region): Copy instead of incrementing modification counts, since integer overflow checking is not needed here. * src/lisp.h (modiff_count): New type. (modiff_incr, modiff_to_integer): New inline functions. * src/pdumper.c (dump_buffer): Update hash.
2018-12-31Merge from origin/emacs-26Paul Eggert
2fcf2df Fix copyright years by hand 26bed8b Update copyright year to 2019 2814292 Fix value of default frame height. (Bug#33921)
2019-01-01Update copyright year to 2019Paul Eggert
Run 'TZ=UTC0 admin/update-copyright $(git ls-files)'.
2018-08-07More macro renamings for bignumTom Tromey
* src/alloc.c, src/bidi.c, src/buffer.c, src/buffer.h, src/bytecode.c, src/callint.c, src/callproc.c, src/casefiddle.c, src/casetab.c, src/category.c, src/ccl.c, src/character.c, src/character.h, src/charset.c, src/charset.h, src/chartab.c, src/cmds.c, src/coding.c, src/composite.c, src/composite.h, src/data.c, src/dbusbind.c, src/decompress.c, src/dired.c, src/dispextern.h, src/dispnew.c, src/disptab.h, src/doc.c, src/dosfns.c, src/editfns.c, src/emacs-module.c, src/emacs.c, src/eval.c, src/fileio.c, src/floatfns.c, src/fns.c, src/font.c, src/font.h, src/fontset.c, src/frame.c, src/frame.h, src/fringe.c, src/ftcrfont.c, src/ftfont.c, src/gfilenotify.c, src/gnutls.c, src/gtkutil.c, src/image.c, src/indent.c, src/insdel.c, src/intervals.c, src/json.c, src/keyboard.c, src/keymap.c, src/kqueue.c, src/lcms.c, src/lisp.h, src/lread.c, src/macros.c, src/marker.c, src/menu.c, src/minibuf.c, src/msdos.c, src/print.c, src/process.c, src/profiler.c, src/search.c, src/sound.c, src/syntax.c, src/syntax.h, src/sysdep.c, src/term.c, src/termhooks.h, src/textprop.c, src/undo.c, src/w32.c, src/w32console.c, src/w32fns.c, src/w32font.c, src/w32inevt.c, src/w32proc.c, src/w32select.c, src/w32term.c, src/w32term.h, src/w32uniscribe.c, src/window.c, src/xdisp.c, src/xfaces.c, src/xfns.c, src/xfont.c, src/xftfont.c, src/xmenu.c, src/xml.c, src/xrdb.c, src/xselect.c, src/xsettings.c, src/xterm.c, src/xwidget.c Rename XINT->XFIXNUM, XFASTINT->XFIXNAT, XUINT->XUFIXNUM.
2018-07-12Rename integerp->fixnum, etc, in preparation for bignumsTom Tromey
* src/json.c, src/keyboard.c, src/keyboard.h, src/keymap.c, src/kqueue.c, src/lcms.c, src/lisp.h, src/lread.c, src/macros.c, src/marker.c, src/menu.c, src/minibuf.c, src/msdos.c, src/print.c, src/process.c, src/profiler.c, src/search.c, src/sound.c, src/syntax.c, src/sysdep.c, src/term.c, src/terminal.c, src/textprop.c, src/undo.c, src/w16select.c, src/w32.c, src/w32console.c, src/w32cygwinx.c, src/w32fns.c, src/w32font.c, src/w32inevt.c, src/w32proc.c, src/w32select.c, src/w32term.c, src/w32uniscribe.c, src/widget.c, src/window.c, src/xdisp.c, src/xfaces.c, src/xfns.c, src/xfont.c, src/xftfont.c, src/xmenu.c, src/xrdb.c, src/xselect.c, src/xterm.c, src/xwidget.c: Rename INTEGERP->FIXNUM, make_number->make_fixnum, CHECK_NUMBER->CHECK_FIXNUM, make_natnum->make_fixed_natum, NUMBERP->FIXED_OR_FLOATP, NATNUMP->FIXNATP, CHECK_NATNUM->CHECK_FIXNAT.
2018-06-03Centralize Bug#30931 fixPaul Eggert
* src/marker.c (detach_marker): New function. * src/editfns.c (save_restriction_restore): * src/insdel.c (signal_before_change): Use it. (cherry picked from commit 6f66a43d7ad6cada2b7dbb6d07efe36be1dc7ecb)
2018-03-30Centralize Bug#30931 fixPaul Eggert
* src/marker.c (detach_marker): New function. * src/editfns.c (save_restriction_restore): * src/insdel.c (signal_before_change): Use it.
2018-03-26Trivial fixes for last changes to package.el and marker.cStefan Monnier
* lisp/emacs-lisp/package.el (package-quickstart): Add missing version. * src/marker.c (verify_bytepos): Fix typo.
2018-03-26; Spelling fixPaul Eggert
2018-03-26* src/marker.c: Try and speed up byte<->char conversion with many markers.Stefan Monnier
When considering markers (to find a starting point for the conversion), typically one of the two bounds is nearby (coming from cached_(byte|char)pos) but the other is far (point-min or point-max), so change the exit condition so we stop as soon as *one* of the bounds is near. (BYTECHAR_DISTANCE_INITIAL, BYTECHAR_DISTANCE_INCREMENT): New constants. (buf_charpos_to_bytepos, buf_bytepos_to_charpos): Use them to try and reduce the number of markers we consider.
2018-01-01Update copyright year to 2018Paul Eggert
Run admin/update-copyright.
2017-09-13Prefer HTTPS to FTP and HTTP in documentationPaul Eggert
Most of this change is to boilerplate commentary such as license URLs. This change was prompted by ftp://ftp.gnu.org's going-away party, planned for November. Change these FTP URLs to https://ftp.gnu.org instead. Make similar changes for URLs to other organizations moving away from FTP. Also, change HTTP to HTTPS for URLs to gnu.org and fsf.org when this works, as this will further help defend against man-in-the-middle attacks (for this part I omitted the MS-DOS and MS-Windows sources and the test tarballs to keep the workload down). HTTPS is not fully working to lists.gnu.org so I left those URLs alone for now.
2017-01-01Merge from origin/emacs-25Paul Eggert
2e2a806 Fix copyright years by hand 5badc81 Update copyright year to 2017
2016-12-31Update copyright year to 2017Paul Eggert
Run admin/update-copyright.
2016-09-06Avoid assertion violations when using marker positionsEli Zaretskii
* src/intervals.c (set_point_from_marker): If MARKER comes from another buffer, recalculate its byte position before using it to set point. * src/marker.c (set_marker_internal): If POSITION is a marker from another buffer, recalculate its byte position before using it. (Bug#24368)
2016-05-01Fmarker_position doc string clarificationLars Ingebrigtsen
* src/marker.c (Fmarker_position): Clarify the doc string (bug#21231). (cherry picked from commit eeac7c57273cec3f9408b18392dd2bafe3be4450)
2016-05-01Fmarker_position doc string clarificationLars Ingebrigtsen
* src/marker.c (Fmarker_position): Clarify the doc string (bug#21231).
2016-03-10Rework C source files to avoid ^(Paul Eggert
Work around Bug#22884 by rewording comments and strings to avoid ‘(’ at the start of a line unless it starts a function. This change is a short-term hack; in the longer run we plan to fix cc-mode’s performance for C files that have ‘(’ at the start of a line in a comment or string.
2016-01-01Update copyright year to 2016Paul Eggert
Run admin/update-copyright.
2015-01-01Update copyright year to 2015Paul Eggert
Run admin/update-copyright.
2014-09-02* buffer.h (decode_buffer): New function.Dmitry Antipov
* buffer.c (Fbuffer_name, Fbuffer_file_name, Fbuffer_base_buffer) (Fbuffer_local_variables, Fbuffer_modified_p, Fbuffer_modified_tick) (Fbuffer_chars_modified_tick, Fdelete_all_overlays): * data.c (Flocal_variables_p): * fileio.c (Fverify_visited_file_modtime): * marker.c (live_buffer): Use it.
2014-01-01Update copyright year to 2014 by running admin/update-copyright.Paul Eggert
2013-08-16Remove documentation of undefined behavior.Xue Fuqiao
* doc/lispref/positions.texi (Character Motion): * doc/lispref/markers.texi (Moving Markers): (Creating Markers): Comment out undefined behavior. * src/marker.c (set_marker): Remove documentation of undefined behavior.
2013-08-14Refine previous change.Xue Fuqiao
2013-08-14* src/marker.c (set_marker): Reformat documentation.Xue Fuqiao
2013-06-16Use functions, not macros, for XINT etc.Paul Eggert
In lisp.h, prefer functions to function-like macros, and constants to object-like macros, when either will do. This: . simplifies use, as there's no more need to worry about arguments' side effects being evaluated multiple times. . makes the code easier to debug on some platforms. However, when using gcc -O0, keep using function-like macros for a few critical operations, for performance reasons. This sort of thing isn't needed with gcc -Og, but -Og is a GCC 4.8 feature and isn't widely-enough available yet. Also, move functions from lisp.h to individual modules when possible. From a suggestion by Andreas Schwab in <http://bugs.gnu.org/11935#68>. * alloc.c (XFLOAT_INIT, set_symbol_name): * buffer.c (CHECK_OVERLAY): * chartab.c (CHECK_CHAR_TABLE, set_char_table_ascii) (set_char_table_parent): * coding.c (CHECK_NATNUM_CAR, CHECK_NATNUM_CDR): * data.c (BOOLFWDP, INTFWDP, KBOARD_OBJFWDP, OBJFWDP, XBOOLFWD) (XKBOARD_OBJFWD, XINTFWD, XOBJFWD, CHECK_SUBR, set_blv_found) (blv_value, set_blv_value, set_blv_where, set_blv_defcell) (set_blv_valcell): * emacs.c (setlocale) [!HAVE_SETLOCALE]: * eval.c (specpdl_symbol, specpdl_old_value, specpdl_where) (specpdl_arg, specpdl_func, backtrace_function, backtrace_nargs) (backtrace_args, backtrace_debug_on_exit): * floatfns.c (CHECK_FLOAT): * fns.c (CHECK_HASH_TABLE, CHECK_LIST_END) (set_hash_key_and_value, set_hash_next, set_hash_next_slot) (set_hash_hash, set_hash_hash_slot, set_hash_index) (set_hash_index_slot): * keymap.c (CHECK_VECTOR_OR_CHAR_TABLE): * marker.c (CHECK_MARKER): * textprop.c (CHECK_STRING_OR_BUFFER): * window.c (CHECK_WINDOW_CONFIGURATION): Move here from lisp.h, and make these functions static rather than extern inline. * buffer.c (Qoverlayp): * data.c (Qsubrp): * fns.c (Qhash_table_p): * window.c (Qwindow_configuration_p): Now static. * lisp.h: Remove the abovementioned defns and decls. * configure.ac (WARN_CFLAGS): Remove -Wbad-function-cast, as it generates bogus warnings about reasonable casts of calls. * alloc.c (gdb_make_enums_visible) [USE_LSB_TAG]: Remove enum lsb_bits; no longer needed. (allocate_misc, free_misc): Don't use XMISCTYPE as an lvalue. * buffer.c (Qoverlap): * data.c (Qsubrp): * fns.c (Qhash_table_p): Now extern, so lisp.h can use these symbols. * dispextern.h: Include character.h, for MAX_CHAR etc. (GLYPH, GLYPH_CHAR, GLYPH_FACE, SET_GLYPH_CHAR, SET_GLYPH_FACE) (SET_GLYPH, GLYPH_CODE_CHAR, GLYPH_CODE_FACE) (SET_GLYPH_FROM_GLYPH_CODE, GLYPH_MODE_LINE_FACE, GLYPH_CHAR_VALID_P) (GLYPH_CODE_P): Move here from lisp.h. (GLYPH_CHAR, GLYPH_FACE, GLYPH_CODE_CHAR, GLYPH_CODE_FACE) (GLYPH_CHAR_VALID_P, GLYPH_CODE_P): Now functions, not macros. (GLYPH_MODE_LINE_FACE): Now enums, not macros. * eval.c (Fautoload): Cast XUNTAG output to intptr_t, since XUNTAG now returns void *. * lisp.h (lisp_h_XLI, lisp_h_XIL, lisp_h_CHECK_LIST_CONS) (lisp_h_CHECK_NUMBER CHECK_SYMBOL, lisp_h_CHECK_TYPE) (lisp_h_CONSP, lisp_h_EQ, lisp_h_FLOATP, lisp_h_INTEGERP) (lisp_h_MARKERP, lisp_h_MISCP, lisp_h_NILP) (lisp_h_SET_SYMBOL_VAL, lisp_h_SYMBOL_CONSTANT_P) (lisp_h_SYMBOL_VAL, lisp_h_SYMBOLP, lisp_h_VECTORLIKEP) (lisp_h_XCAR, lisp_h_XCDR, lisp_h_XCONS, lisp_h_XHASH) (lisp_h_XPNTR, lisp_h_XSYMBOL): New macros, renamed from their sans-lisp_h_ counterparts. (XLI, XIL, CHECK_LIST_CONS, CHECK_NUMBER CHECK_SYMBOL) (CHECK_TYPE, CONSP, EQ, FLOATP, INTEGERP, MARKERP) (MISCP, NILP, SET_SYMBOL_VAL, SYMBOL_CONSTANT_P, SYMBOL_VAL, SYMBOLP) (VECTORLIKEP, XCAR, XCDR, XCONS, XHASH, XPNTR, XSYMBOL): If compiling via GCC without optimization, define these as macros in addition to inline functions. To disable this, compile with -DINLINING=0. (LISP_MACRO_DEFUN, LISP_MACRO_DEFUN_VOID): New macros. (check_cons_list) [!GC_CHECK_CONS_LIST]: Likewise. (make_number, XFASTINT, XINT, XTYPE, XUNTAG): Likewise, but hand-optimize only in the USE_LSB_TAG case, as GNUish hosts do that. (INTMASK, VALMASK): Now macros, since static values cannot be accessed from extern inline functions. (VALMASK): Also a constant, for benefit of old GDB. (LISP_INT_TAG_P): Remove; no longer needed as the only caller is INTEGERP, which can fold it in. (XLI, XIL, XHASH, XTYPE,XINT, XFASTINT, XUINT) (make_number, XPNTR, XUNTAG, EQ, XCONS, XVECTOR, XSTRING, XSYMBOL) (XFLOAT, XPROCESS, XWINDOW, XTERMINAL, XSUBR, XBUFFER, XCHAR_TABLE) (XSUB_CHAR_TABLE, XBOOL_VECTOR, make_lisp_ptr, CHECK_TYPE) (CHECK_STRING_OR_BUFFER, XCAR, XCDR, XSETCAR, XSETCDR, CAR, CDR) (CAR_SAFE, CDR_SAFE, STRING_MULTIBYTE, SDATA, SSDATA, SREF, SSET) (SCHARS, STRING_BYTES, SBYTES, STRING_SET_CHARS, STRING_COPYIN, AREF) (ASIZE, ASET, CHAR_TABLE_REF_ASCII, CHAR_TABLE_REF) (CHAR_TABLE_SET, CHAR_TABLE_EXTRA_SLOTS, SYMBOL_VAL, SYMBOL_ALIAS) (SYMBOL_BLV, SYMBOL_FWD, SET_SYMBOL_VAL, SET_SYMBOL_ALIAS) (SET_SYMBOL_BLV, SET_SYMBOL_FWD, SYMBOL_NAME, SYMBOL_INTERNED_P) (SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P, SYMBOL_CONSTANT_P) (XHASH_TABLE, HASH_TABLE_P, CHECK_HASH_TABLE, HASH_KEY, HASH_VALUE) (HASH_NEXT, HASH_HASH, HASH_INDEX, HASH_TABLE_SIZE) (XMISC, XMISCANY, XMARKER, XOVERLAY, XSAVE_VALUE, XFWDTYPE) (XINTFWD, XBOOLFWD, XOBJFWD, XBUFFER_OBJFWD, XKBOARD_OBJFWD) (XFLOAT_DATA, XFLOAT_INIT, NILP, NUMBERP, NATNUMP) (RANGED_INTEGERP, CONSP, FLOATP, MISCP, STRINGP, SYMBOLP) (INTEGERP, VECTORLIKEP, VECTORP, OVERLAYP) (MARKERP, SAVE_VALUEP, AUTOLOADP, INTFWDP, BOOLFWDP, OBJFWDP) (BUFFER_OBJFWDP, KBOARD_OBJFWDP, PSEUDOVECTOR_TYPEP) (PSEUDOVECTORP, WINDOW_CONFIGURATIONP, PROCESSP, WINDOWP) (TERMINALP, SUBRP, COMPILEDP, BUFFERP, CHAR_TABLE_P) (SUB_CHAR_TABLE_P, BOOL_VECTOR_P, FRAMEP, IMAGEP, ARRAYP) (CHECK_LIST, CHECK_LIST_CONS, CHECK_LIST_END, CHECK_STRING) (CHECK_STRING_CAR, CHECK_CONS, CHECK_SYMBOL, CHECK_CHAR_TABLE) (CHECK_VECTOR, CHECK_VECTOR_OR_STRING, CHECK_ARRAY) (CHECK_VECTOR_OR_CHAR_TABLE, CHECK_BUFFER, CHECK_WINDOW) (CHECK_WINDOW_CONFIGURATION, CHECK_PROCESS, CHECK_SUBR) (CHECK_NUMBER, CHECK_NATNUM, CHECK_MARKER, XFLOATINT) (CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT, CHECK_OVERLAY) (CHECK_NUMBER_CAR, CHECK_NUMBER_CDR, CHECK_NATNUM_CAR) (CHECK_NATNUM_CDR, FUNCTIONP, SPECPDL_INDEX, LOADHIST_ATTACH) Now functions. (check_cons_list) [!GC_CHECK_CONS_LIST]: New empty function. (LISP_MAKE_RVALUE, TYPEMASK): Remove; no longer needed. (VALMASK): Define in one place rather than in two, merging the USE_LSB_TAG parts; this is simpler. (aref_addr, gc_aset, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM) (max, min, struct Lisp_String, UNSIGNED_CMP, ASCII_CHAR_P): Move up, to avoid use before definition. Also include "globals.h" earlier, for the same reason. (make_natnum): New function. (XUNTAG): Now returns void *, not intptr_t, as this means fewer casts. (union Lisp_Fwd, BOOLFWDP, BOOL_VECTOR_P, BUFFER_OBJFWDP, BUFFERP) (CHAR_TABLE_P, CHAR_TABLE_REF_ASCII, CONSP, FLOATP, INTEGERP, INTFWDP) (KBOARD_OBJFWDP, MARKERP, MISCP, NILP, OBJFWDP, OVERLAYP, PROCESSP) (PSEUDOVECTORP, SAVE_VALUEP, STRINGP, SUB_CHAR_TABLE_P, SUBRP, SYMBOLP) (VECTORLIKEP, WINDOWP, Qoverlayp, char_table_ref, char_table_set) (char_table_translate, Qarrayp, Qbufferp, Qbuffer_or_string_p) (Qchar_table_p, Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp) (Qnil, Qnumberp, Qsubrp, Qstringp, Qsymbolp, Qvectorp) (Qvector_or_char_table_p, Qwholenump, Ffboundp, wrong_type_argument) (initialized, Qhash_table_p, extract_float, Qprocessp, Qwindowp) (Qwindow_configuration_p, Qimage): New forward declarations. (XSETFASTINT): Simplify by rewriting in terms of make_natnum. (STRING_COPYIN): Remove; unused. (XCAR_AS_LVALUE, XCDR_AS_LVALUE): Remove these macros, replacing with ... (xcar_addr, xcdr_addr): New functions. All uses changed. (IEEE_FLOATING_POINT): Now a constant, not a macro. (GLYPH, GLYPH_CHAR, GLYPH_FACE, SET_GLYPH_CHAR, SET_GLYPH_FACE) (SET_GLYPH, GLYPH_CODE_CHAR, GLYPH_CODE_FACE) (SET_GLYPH_FROM_GLYPH_CODE, GLYPH_MODE_LINE_FACE, GLYPH_CHAR_VALID_P) (GLYPH_CODE_P): Move to dispextern.h, to avoid define-before-use. (TYPE_RANGED_INTEGERP): Simplify. (Qsubrp, Qhash_table_p, Qoverlayp): New extern decls. (setlocale, fixup_locale, synchronize_system_messages_locale) (synchronize_system_time_locale) [!HAVE_SETLOCALE]: Now empty functions, not macros. (functionp): Return bool, not int. * window.c (Qwindow_configuration_p): Now extern, so window.h can use it. * window.h (Qwindowp): Move decl back to lisp.h.