[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#25943: 21.5 Frame Display Difficulties
From: |
david |
Subject: |
bug#25943: 21.5 Frame Display Difficulties |
Date: |
Thu, 02 Mar 2017 20:51:04 -0700 |
User-agent: |
Tuxedo/0.1 |
;;; -*-Mode: emacs-lisp; Coding: emacs-mule; fill-column: 100-*-
;;; This file is executable and shows some problems indicated below.
Execution is addressed further
;;; down. The generating OS, etc. information is at the end of this file.
;;; Background information: I am updating from emacs 23.2 running on
Trisquel 5.0, to 25.1 running
;;; on Mint 18.1 and Trisquel 7. So I have jumped over v24. I have over
50K lines of elisp that
;;; have run successfully for over 20 years. I have modified, extended,
and updated the code over
;;; the years as necessary, but the code still is basically the original.
23.2 on Trisquel has been
;;; great, but I am sure that you will understand the need to get up to
date with OS and emacs.
;;; Also, I hope that you understand that it is important to me to keep my
software running
;;; correctly.
;;; Regrettably, 25.1 does not support my code very well, this is in
contrast to 23.2, and, really,
;;; all previous versions dating back at least to v19, where it does work
well. I am trying to
;;; solve the problems, currently there are two of them that are serious
from my point of view, and
;;; one other that is a nuisance.
;;; The first problem is that 25.1 does not position a new frame correctly
unless the frame is
;;; visible when created. Starting with a visible frame is tacky because
of the flashing that
;;; results. Command simple-doit-1 demonstrates this, see below for notes
on execution.
;;; I spent a lot of time looking in the wrong places for a bug, but have
concluded that the problem
;;; is more of a design issue. I think that I have identified what is
happening, but I leave that
;;; to you to judge. The problem appears at xterm.c:10971, and is alluded
to in window.c:2335-2340.
;;; This is from window.c
;;; /* Yuck!! If we've just created the frame and the
;;; window-manager requested the user to place it
;;; manually, the window may still not be considered
;;; `visible'. I'd argue it should be at least
;;; something like `iconified', but don't know how to do
;;; that yet. --Stef */
;;; This is part of x_make_frame_visible at line xterm.c:10963
;;; Don't do this if the window has never been visible before,
;;; because the window manager may choose the position
;;; and we don't want to override it. */
;;;
;;; if (! FRAME_VISIBLE_P (f)
;;; && ! FRAME_ICONIFIED_P (f)
;;; && ! FRAME_X_EMBEDDED_P (f)
;;; && f->win_gravity == NorthWestGravity
;;; && previously_visible)
;;; So, my case is that I create a frame and want to position it before I
make it visible, this is
;;; nothing to do with the window manager. I can solve the problem by
eliminating the
;;; "previously_visible" part of the test above, and I am doing that as a
temporary get-around.
;;; But, of course, that elimination cuts across your window manager
concern.
;;; The second problem concerns user input, as is required in the current
file. The (discard-input)
;;; code immediately before the read-event in simple-doit-1, and which has
not been necessary with
;;; previous versions of emacs, has a disadvantage whether or not it is in
place. If it is not
;;; there (you need to comment the line to see this effect), the effect
can be something like key
;;; bounce, and this can be seen when the first text appears in the popup:
two text lines may
;;; appear, instead of one. If (discard-input) is in the code, the
performance is better, but if a
;;; series of key entries must be made, a requirement in my code, then the
user must consciously
;;; pause between key entries. This is a user-nuisance kind of problem.
;;; An additional facet of this problem is that it does not always
manifest itself. Thus,
;;; sometimes, you will not see the two text lines appear together without
obvious input. This
;;; second problem is described here for information, you may or may not
be able to reproduce it.
;;; Either way it is a degradation of performance of emacs. This problem
has appeared in my code's
;;; performance in the change between 23.2 and 25.1.
;;; The third problem was to have been demonstrated with another command,
but I have been unable to
;;; reproduce the problem in a simple function. The problem is a sometime
occurring,
;;; display-wrecking, problem. I wonder if it is not even an emacs
problem, but due to underlying
;;; rendering library code. The problem is repeatable. Also, it is new
in 25.1 compared with 23.2.
;;; What I have done is take a screen shot showing the problem, a .jpg
image is attached, the screen
;;; shot is cropped. What is shown is two frames, the green frame is a
frame generated by executing
;;; code (similar to simple-doit-1, but considerably more complicated),
the cream frame is the main
;;; emacs frame. The black is the xterm background. The frame windows
are displaying the same
;;; buffer, at the same time, normally these displays are identical
because the buffer is the same.
;;; The green frame in the image shows a distorted text display, this
frame always is correctly
;;; sized for the correct text. The break at the sixty-first column is
repeatable, but other
;;; displays break at other places.
;;; I realize that solving this problem may be, at least, very difficult.
I am hoping that you have
;;; some insight into the how and why. I am simply letting you know that
what is happening, and it
;;; is new, after twenty-odd years.
;;; To run this code, first check the lines immediately below to
understand what they do, and modify
;;; the binding if desired. Then, evaluate the file, press the bound key,
and follow the
;;; instructions in the echo area, pressing any key several times until
the left value (shown in the
;;; popup as l:-NN) goes positive. The problem is the first display of
the popup. Next, change the
;;; value of the visibility switch below, re-evaluate. and repeat the key
press, etc.
;; Change to see different performance under 25.1 (also 24.5, I checked
24.5 at some point).
(defconst simple-visibility 'nil)
;; Binding. Change as required.
(global-set-key [f11] 'simple-doit-1)
;; A service variable.
(defvar .emacs-current-emacs-version
(let ((lead-in "GNU Emacs ") ; an assumption, correct for 23.2, 24.5,
and 25.1
(dot "\\.")
(version (emacs-version))
(dummy "NOT INITIALIZED"))
(setq dummy (substring version (length lead-in)))
(substring dummy 0 (string-match dot dummy (1+ (string-match
dot dummy))) ))
"The current emacs version, as a string, with format NN.N")
(defun simple-doit-1 ()
"Tests frame sizing and positioning."
(interactive)
(let ((simple-frame (make-frame `((name . "Simple Frame")
(visibility .
,simple-visibility))) )
(simple-buffer (get-buffer-create "Simple Buffer")))
(set-window-buffer (frame-selected-window simple-frame)
simple-buffer)
(with-current-buffer simple-buffer (erase-buffer)
(insert (format "version %s"
.emacs-current-emacs-version)))
(let* ((invoking-frame (selected-frame))
(newish (<= 25.1 (string-to-number
.emacs-current-emacs-version)))
(invoke-origin (if newish
(frame-position invoking-frame)
'(0 . 25)))
(invoke-left (car invoke-origin))
(invoke-top (cdr invoke-origin))
(left -41)
(top invoke-top)
(width 60)
(height 6))
(unwind-protect
(while (progn
(set-frame-size simple-frame width height)
(set-frame-position simple-frame left top)
(select-frame-set-input-focus simple-frame)
(set-buffer simple-buffer)
(goto-char (point-max))
(insert (format "\n%s l:%3d t:%3d w:%3d h:%3d"
(selected-frame) left top width
height))
(setq left (+ left 10)
top (+ top 10)
height (+ height 1))
;;; (if newish (discard-input))
;; loop test
(not (equal
(read-event "press any key to continue, escape
to terminate")
'escape))) )
;; end no body while
;; Protected.
(select-frame invoking-frame)
(delete-frame simple-frame))) ))
;;; The End.
;;; david@ngdr.net
;;; 2 March 2017
;;; In GNU Emacs 25.1.13 (x86_64-unknown-linux-gnu, GTK+ Version 3.18.9)
;;; of 2017-02-25 built on Erota
;;; Windowing system distributor 'The X.Org Foundation', version
11.0.11804000
;;; System Description: Linux Mint 18.1 Serena
;;;
;;; Configured using:
;;; 'configure CFLAGS=-g'
;;;
;;; Configured features:
;;; XPM JPEG TIFF GIF PNG SOUND DBUS GSETTINGS NOTIFY FREETYPE XFT ZLIB
;;; TOOLKIT_SCROLL_BARS GTK3 X11
;;;
;;; Important settings:
;;; value of $LANG: en_US.UTF-8
;;; locale-coding-system: utf-8-unix
;;;
;;; Major mode: Info
;;;
;;; Minor modes in effect:
;;; display-time-mode: t
;;; show-paren-mode: t
;;; shell-dirtrack-mode: t
;;; tooltip-mode: t
;;; global-eldoc-mode: t
;;; electric-indent-mode: t
;;; mouse-wheel-mode: t
;;; tool-bar-mode: t
;;; menu-bar-mode: t
;;; file-name-shadow-mode: t
;;; global-font-lock-mode: t
;;; font-lock-mode: t
;;; blink-cursor-mode: t
;;; auto-composition-mode: t
;;; auto-encryption-mode: t
;;; auto-compression-mode: t
;;; buffer-read-only: t
;;; column-number-mode: t
;;; line-number-mode: t
;;; transient-mark-mode: t
;;; Load-path shadows:
;;; None found.
;;;
;;; Features:
;;; (shadow sort mail-extr emacsbug message format-spec rfc822 mml mml-sec
;;; password-cache epg epg-config gnus-util mm-decode mm-bodies mm-encode
;;; mail-parse rfc2231 mailabbrev gmm-utils mailheader browse-url ispell
;;; image-mode sh-script smie executable sgml-mode cl-extra cc-mode
;;; cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
;;; cc-vars cc-defs dabbrev misearch multi-isearch mailalias sendmail
;;; rfc2047 rfc2045 ietf-drums mm-util help-fns help-mode mail-prsvr
;;; mail-utils advice effective-impressive-communications Favourites
;;; fileset-Web fileset-Emacs25 fileset-Nepenthes fileset-VTrack
;;; fileset-NDM Local-filesets MinorTools time paren Load-Nepenthes
;;; Load-Environ MoreTools fileset-NavigationShellExtensionsCompilable
;;; fileset-NavigationShellKernelCompilable ConfigViews MaintenanceHelp
;;; FileProcessing ExtendedHelp DocumentMap Spawn ManInfo Logging
;;; GenericTools Fileset tex-mode shell pcomplete makeinfo texinfo compile
;;; comint ansi-color ring Common Maintenance SearchAndMod Path-Environ
;;; Load-NavigationShell FixupKeymaps Texinfo NewFile find-func
;;; HelpAtPoint Customize ToolsHelp noutline outline easy-mmode Tools
;;; ModeChange ModeChangeHelp NavShellHelp KeyDisplayEdit KeyDisplayHelp
;;; EmacsHelp dired NavigationShell PopEdit KeyDisplay Path-NavShell info
;;; speedbar sb-image ezimage dframe derived easymenu cl-macs gv
;;; cl-loaddefs pcase cl-lib Basis time-date mule-util tooltip eldoc
;;; electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win
;;; term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
;;; tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
;;; menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
;;; syntax facemenu font-core frame cl-generic cham georgian utf-8-lang
;;; misc-lang vietnamese tibetan thai tai-viet lao korean japanese
;;; eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic
;;; indian cyrillic chinese charscript case-table epa-hook jka-cmpr-hook
;;; help simple abbrev minibuffer cl-preloaded nadvice loaddefs button
;;; faces cus-face macroexp files text-properties overlay sha1 md5 base64
;;; format env code-pages mule custom widget hashtable-print-readable
;;; backquote dbusbind inotify dynamic-setting system-font-setting
;;; font-render-setting move-toolbar gtk x-toolkit x multi-tty
;;; make-network-process emacs)
;;;
;;; Memory information:
;;; ((conses 16 307931 161132)
;;; (symbols 48 29413 0)
;;; (miscs 40 323 2286)
;;; (strings 32 48593 29093)
;;; (string-bytes 1 1599176)
;;; (vectors 16 20546)
;;; (vector-slots 8 568963 16849)
;;; (floats 8 292 1019)
;;; (intervals 56 10070 3360)
;;; (buffers 976 157)
;;; (heap 1024 437759 51414))
Screenshot from 2017-02-25 10-08-23.jpg
Description: Binary data
- bug#25943: 21.5 Frame Display Difficulties,
david <=
- bug#25943: 21.5 Frame Display Difficulties, martin rudalics, 2017/03/03
- Message not available
- bug#25943: 21.5 Frame Display Difficulties, martin rudalics, 2017/03/04
- bug#25943: 21.5 Frame Display Difficulties, david, 2017/03/06
- bug#25943: 21.5 Frame Display Difficulties, martin rudalics, 2017/03/07
- bug#25943: 21.5 Frame Display Difficulties, david, 2017/03/08
- bug#25943: 21.5 Frame Display Difficulties, martin rudalics, 2017/03/09
- bug#25943: 21.5 Frame Display Difficulties, david, 2017/03/10
- bug#25943: 21.5 Frame Display Difficulties, martin rudalics, 2017/03/11
- bug#25943: 21.5 Frame Display Difficulties, martin rudalics, 2017/03/23
- bug#25943: 21.5 Frame Display Difficulties, david, 2017/03/28