unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Christopher Miles <numbchild@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Christopher Miles <numbchild@gmail.com>,
	"emacs-devel@gnu.org" <emacs-devel@gnu.org>
Subject: [FEATURE SUGGESTED] Re: [BUG] ov property line height failed on lone length line when exceeded window width
Date: Wed, 27 Jan 2021 14:34:06 +0000	[thread overview]
Message-ID: <PAXPR08MB6640656C66ADBD53CF772B44A3BB0@PAXPR08MB6640.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <835zc8ciqb.fsf@gnu.org>


[-- Attachment #1.1: Type: text/plain, Size: 3110 bytes --]

<#secure method=pgpmime mode=sign>

I tried to use text-property to implement this effect, but seems not working.

(with-current-buffer (get-buffer org-agenda-buffer)
  (let ((position 1084)
        (inhibit-read-only t))
    (goto-char position)
    (put-text-property (point-at-bol) (1+ (point-at-bol)) 'display " ")
    (let ((ov (make-overlay (point-at-bol) (1+ (point-at-bol)))))
      (overlay-put ov 'line-height 100))))


Eli Zaretskii <eliz@gnu.org> writes:

[Please use "Reply All" to keep the list CC'ed.]

From: "numbchild@gmail.com" <numbchild@gmail.com> Date: Wed, 3 Jun 2020 19:48:57 +0800

Can you please describe how you set the overlay, or better yet, show the code which does so?

The main functionality code set overlay on org-agenda is here:

(defun org-agenda-log-mode-colorize-block () "Set different line spacing based on clock time duration." (save-excursion (let* ((colors (cl-case (alist-get 'background-mode (frame-parameters)) ('light (list "#F6B1C3" "#FFFF9D" "#BEEB9F" "#ADD5F7")) ('dark (list "#aa557f" "DarkGreen" "DarkSlateGray" "DarkSlateBlue")))) pos duration) (nconc colors colors) (goto-char (point-min)) (while (setq pos (next-single-property-change (point) 'duration)) (goto-char pos) (when (and (not (equal pos (point-at-eol))) (setq duration (org-get-at-bol 'duration))) ;; larger duration bar height ;; FIXME (< duration 15) (let ((line-height (if (< duration 15) 1.0 (+ 0.5 (/ duration 30)))) (ov (make-overlay (point-at-bol) (1+ (point-at-eol))))) (overlay-put ov 'face `(:background ,(car colors) :foreground "black")) (setq colors (cdr colors)) (overlay-put ov 'line-height line-height) (overlay-put ov 'line-spacing (1- line-height))))))))

(add-hook 'org-agenda-finalize-hook #'org-agenda-log-mode-colorize-block)

And for a minimal example of setting overlay code is here:

(let ((line-height 20) (ov (make-overlay (point-at-bol) (1+ (point-at-eol))))) (overlay-put ov 'face '(:background "yellow")) (overlay-put ov 'line-height line-height) (overlay-put ov 'line-spacing (1- line-height)))

Did you per chance put the overlay on the part of the line that is not shown when you split the window?

About this problem, I suggest you check out my video link, it shows how the overlay line-height property failed when I split window with `split-window-right`. The line height property is gone. (I mean the visual effect is gone.)

In that case, this is the expected behavior: if the newline with the line-height property is not visible, the setting has no effect. It is conceptually the same as having a tall character or image displayed on a line: if you then truncate the line so that the tall element is not visible, the line's height will be decreased to reflect what is actually on display.

I review this message, does this means the 'line-height overlay property is only on the newline, not on whole line? Is this design for some purpose? This property sounds like should be work on current line instead of newline.

This is not a bug. You are trying to use this property in a way that it wasn't designed to support.

[-- Attachment #1.2: Type: text/html, Size: 6217 bytes --]

[-- Attachment #2: ATT00001.txt --]
[-- Type: text/plain, Size: 253 bytes --]

-- 
[ stardiviner ]
       I try to make every word tell the meaning that I want to express.

       Blog: https://stardiviner.github.io/
       IRC(freenode): stardiviner, Matrix: stardiviner
       GPG: F09F650D7D674819892591401B5DF1C95AE89AC3

  parent reply	other threads:[~2021-01-27 14:34 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-03 10:23 [BUG] ov property line height failed on lone length line when exceeded window width numbchild
2020-06-03 11:07 ` Eli Zaretskii
     [not found]   ` <CAL1eYuJ0_rTgUr3bimtQHcX3fPG72sdhU53h9kkZ_jbiLaNpaA@mail.gmail.com>
2020-06-03 14:43     ` Eli Zaretskii
2020-06-04  0:43       ` stardiviner
2020-06-04 13:16         ` Eli Zaretskii
2020-06-04 15:46           ` stardiviner
2020-06-05 11:58             ` Eli Zaretskii
2020-06-05 15:59               ` stardiviner
2021-01-27 13:59               ` Christopher Miles
2021-01-27 14:34       ` Christopher Miles [this message]
2021-01-30  9:08         ` [FEATURE SUGGESTED] " Eli Zaretskii
2021-01-30 12:15           ` Christopher Miles

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=PAXPR08MB6640656C66ADBD53CF772B44A3BB0@PAXPR08MB6640.eurprd08.prod.outlook.com \
    --to=numbchild@gmail.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).