Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding : back to fl in global-aliases causes a display glitch #15

Closed
cpitclaudel opened this issue Jul 3, 2016 · 18 comments
Closed

Adding : back to fl in global-aliases causes a display glitch #15

cpitclaudel opened this issue Jul 3, 2016 · 18 comments

Comments

@cpitclaudel
Copy link
Contributor

Here's a repro:

''(font-lock-test)
;; ^ here
;; Local Variables:
;; nameless-global-aliases:
;;    (("fl:" . "font-lock"))
;; End:

And here's how it displays for me:

screenshot from 2016-07-03 13 42 26

Note the spurious colon overlapped with the f of fl:.

@Malabarba
Copy link
Owner

Malabarba commented Jul 5, 2016

I've been getting loads of display glitches here, and I suspect it might be a real display bug in the master branch. Am I correct in assuming you're using the Emacs master branch?

@cpitclaudel
Copy link
Contributor Author

Spot on. Time for a git bisect probably. You or me?

@Malabarba
Copy link
Owner

Oh dear, bisecting a display bug? I think I'm gonna leave that to you. :-)

If it helps I can tell you my build is from June 1st. So it's at least as old as that.

@cpitclaudel
Copy link
Contributor Author

Ok :) I won't have time until a few days from now, though.

@Malabarba
Copy link
Owner

Yeah. It's a bug that needs visual confirmation, and probably needs an entire make before each testing step. It's probably going to take a while to hunt down. :-(

@cpitclaudel
Copy link
Contributor Author

Hmm. I think can use a screenshot to automate the bisecting; that'll make for a fun challenge. I already use screenshots for regression testing in company-coq.

Last time I had to do such bisecting was for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=21028 , and the three hours it took to pinpoint the commit are nothing compared to the multiple months that it took/will take to get it fixed :)

@Malabarba
Copy link
Owner

Hmm. I think can use a screenshot to automate the bisecting; that'll make for a fun challenge. I already use screenshots for regression testing in company-coq.

Now that sounds like a lot more fun. :-)

@cpitclaudel
Copy link
Contributor Author

git bisect run ... is working on it right now. 1500 revisions to go, at about 15 minutes per bisect loop should be a few hours :)

@Malabarba
Copy link
Owner

😱

@cpitclaudel
Copy link
Contributor Author

Ok, found it :) 🎉 after 130k lines of make output and 4 hours of automatic bisecting.

237244bbd5ce753bcdf79634561de515bd76c687 is the first bad commit
commit 237244bbd5ce753bcdf79634561de515bd76c687
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Mon May 30 16:09:25 2016 -0700

    Omit IF_LINT code that no longer seems needed

    Nowadays GCC is smarter, or the Emacs code has mutated, or both,
    and now is as good a time as any to remove uses of IF_LINT that
    now seem to be unnecessary.
    * lib-src/emacsclient.c (set_local_socket):
    * lib-src/movemail.c (main) [MAIL_USE_MAILLOCK && HAVE_TOUCHLOCK]:
    * src/buffer.c (fix_start_end_in_overlays, fix_overlays_before):
    * src/casefiddle.c (casify_region):
    * src/charset.c (load_charset_map):
    * src/coding.c (decode_coding_object, encode_coding_object):
    * src/data.c (Fmake_variable_buffer_local, Fmake_local_variable)
    (cons_to_unsigned, cons_to_signed):
    * src/frame.c (make_frame, x_set_frame_parameters):
    * src/keyboard.c (read_event_from_main_queue):
    * src/regex.c (regex_compile):
    * src/syntax.c (back_comment):
    * src/window.c (Frecenter):
    * src/xfaces.c (Fx_list_fonts):
    Remove IF_LINT that no longer seems necessary.
    * src/image.c (png_load_body, jpeg_load_body): Simplify use of IF_LINT.
    * src/keyboard.c (read_char): Use IF_LINT (volatile) rather than
    a pragma dance to pacify GCC -Wclobbered.
    * src/xdisp.c (x_produce_glyphs): Rewrite to avoid need for IF_LINT.

    * src/xterm.c (x_connection_closed): Now _Noreturn, which should
    mean we do not need IF_LINT any more.
    (x_io_error_quitter): Now _Noreturn.  Put an 'assume (false)’
    at the end, to forestall warnings from older compilers.

:040000 040000 cc239faed6bf69466195aff82bbea45f8ae688de 9852e21ced17d2245500ec938cb32f30a00bc953 M  lib-src
:040000 040000 58ffe214536a59dcbca8e332fc3b7cf7a065e23d 1dcc927806ec3029d5de7f41a07d443c6013a3f6 M  src
bisect run success

With that commit I see bad; with the one just before I see good.

Can you help make a small repro that doesn't depend on nameless? That would be very nice. Then I can write the report :)

Here's the full trace:

# bad: [01030eed9395f5004e7d0721394697d1ca90cc2f] ; Spelling fixes
# good: [866501efe0fdc0c29448e0aaf8696eb0a3c8fcd6] * lisp/ChangeLog: Remove a duplicate
git bisect start 'HEAD' 'emacs-24.5'
# good: [02586bdee33aad75b6495f0949271c27d44d34a0] Revert my change to gnus-art.el
git bisect good 02586bdee33aad75b6495f0949271c27d44d34a0
# skip: [a0b7842700dfa3c730a1aed5fefa222c0f84605f] ; * lisp/emacs-lisp/autoload.el update-directory-autoloads): Fix typo in previous.
git bisect skip a0b7842700dfa3c730a1aed5fefa222c0f84605f
# skip: [4e559f22a00b38e067cde7863635c96d8790e4b3] * lisp/progmodes/project.el (project--read-regexp): Quote the identifier.
git bisect skip 4e559f22a00b38e067cde7863635c96d8790e4b3
# good: [bec57a486a2a40d7c770dab72a34cf6a4d17a5d0] Some final fixes in file notification before merging with master
git bisect good bec57a486a2a40d7c770dab72a34cf6a4d17a5d0
# good: [a4d882cd09507fa1f891984fc7435923de3566fe] Correct old cell name unbinding when renaming cell.
git bisect good a4d882cd09507fa1f891984fc7435923de3566fe
# good: [35d58020b6e173b137429786d174ffdb8894a812] Remove trailing blank lines in shr
git bisect good 35d58020b6e173b137429786d174ffdb8894a812
# good: [36906806ccfc0e53f1d8c365ab0d7151288b7833] Improve display of tex-verbatim and Info quoted
git bisect good 36906806ccfc0e53f1d8c365ab0d7151288b7833
# bad: [2f523c15801366d269cb4a526906e018f8cd713f] Make python.el work in Emacs 24
git bisect bad 2f523c15801366d269cb4a526906e018f8cd713f
# bad: [01030eed9395f5004e7d0721394697d1ca90cc2f] ; Spelling fixes
git bisect bad 01030eed9395f5004e7d0721394697d1ca90cc2f
# good: [21e87ece97e90f5500bd49b84dca08d97bd4f155] Fix Bug#23614.
git bisect good 21e87ece97e90f5500bd49b84dca08d97bd4f155
# skip: [4e182dce20bd09e38a69bdf637a3bf2a8bbfdc58] Port to platforms where rlim_max < 0
git bisect skip 4e182dce20bd09e38a69bdf637a3bf2a8bbfdc58
# good: [6ca36676c96954466bc0f1266115dff641697424] Repair damage from emacs-25 merge
git bisect good 6ca36676c96954466bc0f1266115dff641697424
# good: [062757dca01cff127583438ae16237af55b6253c] Sync with Tramp repository.
git bisect good 062757dca01cff127583438ae16237af55b6253c
# skip: [09b72fc38aee1032b6d2c8476bcc22a2e7ec5642] * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Add docstring to accessors.
git bisect skip 09b72fc38aee1032b6d2c8476bcc22a2e7ec5642
# skip: [b342815c0a9af8d94d4290d17882de73f6fd9373] Improve define-function omitted-arg documentation
git bisect skip b342815c0a9af8d94d4290d17882de73f6fd9373
# good: [5cdebe7d8b692113c3577a6ded81cb149fe6f042] * src/puresize.h (BASE_PURESIZE): Increase it by a little bit.
git bisect good 5cdebe7d8b692113c3577a6ded81cb149fe6f042
# good: [4ce68f8f0f1dd1aa518e6e682b2c2cef1f49d953] * src/puresize.h (BASE_PURESIZE): Increase it some more.
git bisect good 4ce68f8f0f1dd1aa518e6e682b2c2cef1f49d953
# good: [66cd9187e396abfa7220d6a8f8d1a7064ef20b1e] Don’t document declare-function internals
git bisect good 66cd9187e396abfa7220d6a8f8d1a7064ef20b1e
# good: [1535aaf2873ddc6bcf113261800fc137a611e661] Fix Bug#23631 for Tramp
git bisect good 1535aaf2873ddc6bcf113261800fc137a611e661
# good: [cb379cbb7fc617f897e7dbc3ce45bf99ea3d1f87] Port --enable-gcc-warnings to Cygwin, FreeBSD
git bisect good cb379cbb7fc617f897e7dbc3ce45bf99ea3d1f87
# bad: [1992075d990ecf780225f446ec3f616bf821d89e] * src/conf_post.h (SYSTEM_PURESIZE_EXTRA) [CYGWIN]: Increase.
git bisect bad 1992075d990ecf780225f446ec3f616bf821d89e
# bad: [237244bbd5ce753bcdf79634561de515bd76c687] Omit IF_LINT code that no longer seems needed
git bisect bad 237244bbd5ce753bcdf79634561de515bd76c687
# first bad commit: [237244bbd5ce753bcdf79634561de515bd76c687] Omit IF_LINT code that no longer seems needed

@Malabarba
Copy link
Owner

Oh dear, it had to be a large commit. ¬¬

Can you help make a small repro that doesn't depend on nameless? That would be very nice. Then I can write the report :)

Absolutely. That I can do. :-) I'll write something later today (or tomorrow at the latest).

@Malabarba
Copy link
Owner

Also, is the bad commit in the emacs-25 branch? It would be a shame if a whole stable release got out that's incompatible with nameless. :-(

@cpitclaudel
Copy link
Contributor Author

Absolutely. That I can do. :-) I'll write something later today (or tomorrow at the latest).

Yay, thanks!

Also, is the bad commit in the emacs-25 branch? It would be a shame if a whole stable release got out that's incompatible with nameless. :-(

No worries, it's only on master :) Phew.

@Malabarba
Copy link
Owner

Here you go. To reproduce simply:

  1. Switch to a new buffer in fundamental-mode.
  2. Insert some text into it.
  3. Evaluate: (compose-region (point-min) (point-max) '(?b (Br . Bl) ?d)).

Previously, you should see bd. Instead, you just see the two letter overlayed on top of each other.

@cpitclaudel
Copy link
Contributor Author

Thanks! Indeed, works perfect. I'll open the report now :)

@cpitclaudel
Copy link
Contributor Author

@cpitclaudel
Copy link
Contributor Author

Confirmed fixed by 4ba2946369cb19dfeb258839add0658c742c12a1

@Malabarba
Copy link
Owner

Great! ☺

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants