* Re:Re: [RFC] Add posframe.el to elpa
2018-02-26 3:20 ` Stefan Monnier
@ 2018-02-26 7:44 ` tumashu
2018-02-26 10:51 ` Dmitry Gutov
0 siblings, 1 reply; 22+ messages in thread
From: tumashu @ 2018-02-26 7:44 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel@gnu.org
[-- Attachment #1.1: Type: text/plain, Size: 619 bytes --]
OK, I have reinit my posframe's github repo, and add it to elpa.git with subtree.
the patches are here :-)
At 2018-02-26 11:20:22, "Stefan Monnier" <monnier@IRO.UMontreal.CA> wrote: >> Two question: >> 1. Does all the package maintainer have elpa.git write access? > >Usually, yes. > >> 2. the posframe's git log is very ugly, should I SQUASH my posframe repo >> before adding it to elpa's subtree? > >Your call. Squashing makes future sync-ing between elpa.git and some >other repository rather painful, so I'd only recommend it if you intend >for elpa.git to become the "official upstream". > > > Stefan
[-- Attachment #1.2: Type: text/html, Size: 925 bytes --]
[-- Attachment #2: 0001-Reinit-the-repo-for-sync-elpa.git.patch --]
[-- Type: application/octet-stream, Size: 100465 bytes --]
From 489620f6bd1ca5a6363d4ab9176b6eeb753e7f3b Mon Sep 17 00:00:00 2001
From: Feng Shu <tumashu@163.com>
Date: Mon, 26 Feb 2018 15:25:11 +0800
Subject: [PATCH 1/2] Reinit the repo for sync elpa.git
The old repo's git log is ugly and seem to useless, if I use git subtree
to sync it to elpa.git, the ugly log will go into elpa.git too. It seem to
be not a good idea.
A new start ....
---
README.md | 95 +++++++
posframe.el | 719 +++++++++++++++++++++++++++++++++++++++++++++++
snapshots/posframe-1.png | Bin 0 -> 55570 bytes
3 files changed, 814 insertions(+)
create mode 100644 README.md
create mode 100644 posframe.el
create mode 100644 snapshots/posframe-1.png
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..3f227e52e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,95 @@
+
+# 目录
+
+1. [Posframe README](#org53f6910)
+ 1. [What is posframe](#org5cf1be8)
+ 2. [Installation](#org5f830e9)
+ 3. [Usage](#org40db1ee)
+ 1. [Create a posframe](#org6f36699)
+ 2. [Hide a posframe](#orgcd529fe)
+ 3. [Hide all posframes](#org4e71a28)
+ 4. [Delete a posframe](#org0f069f2)
+ 5. [Delete all posframes](#org853d491)
+
+
+<a id="org53f6910"></a>
+
+# Posframe README
+
+
+<a id="org5cf1be8"></a>
+
+## What is posframe
+
+Posframe can pop a posframe at point, this **posframe** is a
+child-frame with its root window's buffer.
+
+The main advantages are:
+
+1. It is fast enough for daily usage :-)
+2. It works well with CJK language.
+
+NOTE: For MacOS users, posframe need emacs (version >= 26.0.91)
+
+![img](./snapshots/posframe-1.png)
+
+
+<a id="org5f830e9"></a>
+
+## Installation
+
+ (require 'posframe)
+
+
+<a id="org40db1ee"></a>
+
+## Usage
+
+
+<a id="org6f36699"></a>
+
+### Create a posframe
+
+ (posframe-show " *my-posframe-buffer*"
+ :string "This is a test"
+ :position (point))
+
+Arguments documents:
+
+ C-h f posframe-show
+
+
+<a id="orgcd529fe"></a>
+
+### Hide a posframe
+
+ (posframe-hide " *my-posframe-buffer*")
+
+
+<a id="org4e71a28"></a>
+
+### Hide all posframes
+
+ M-x posframe-hide-all
+
+
+<a id="org0f069f2"></a>
+
+### Delete a posframe
+
+ (posframe-delete " *my-posframe-buffer*")
+
+
+<a id="org853d491"></a>
+
+### Delete all posframes
+
+ M-x posframe-delete-all
+
+Note: this command will delete all posframe buffers,
+suggest not run this command if you are sharing a buffer
+between posframe and other packages.
+
+
+
+Converted from posframe.el by [el2org](https://github.com/tumashu/el2org) .
\ No newline at end of file
diff --git a/posframe.el b/posframe.el
new file mode 100644
index 000000000..0ed9c4255
--- /dev/null
+++ b/posframe.el
@@ -0,0 +1,719 @@
+;;; posframe.el --- Pop a posframe (just a frame) at point -*- lexical-binding:t -*-
+
+;; Copyright (C) 2018 Free Software Foundation, Inc.
+
+;; Author: Feng Shu <tumashu@163.com>
+;; Maintainer: Feng Shu <tumashu@163.com>
+;; URL: https://github.com/tumashu/posframe
+;; Version: 0.1.0
+;; Keywords: tooltip
+;; Package-Requires: ((emacs "26"))
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+
+;; * Posframe README :README:
+;; ** What is posframe
+;; Posframe can pop a posframe at point, this *posframe* is a
+;; child-frame with its root window's buffer.
+
+;; The main advantages are:
+;; 1. It is fast enough for daily usage :-)
+;; 2. It works well with CJK language.
+
+;; NOTE: For MacOS users, posframe need Emacs (version >= 26.0.91)
+
+;; [[./snapshots/posframe-1.png]]
+
+;; ** Installation
+
+;; #+BEGIN_EXAMPLE
+;; (require 'posframe)
+;; #+END_EXAMPLE
+
+;; ** Usage
+
+;; *** Create a posframe
+
+;; #+BEGIN_EXAMPLE
+;; (posframe-show " *my-posframe-buffer*"
+;; :string "This is a test"
+;; :position (point))
+;; #+END_EXAMPLE
+
+;; Arguments documents:
+;; #+BEGIN_EXAMPLE
+;; C-h f posframe-show
+;; #+END_EXAMPLE
+
+;; *** Hide a posframe
+;; #+BEGIN_EXAMPLE
+;; (posframe-hide " *my-posframe-buffer*")
+;; #+END_EXAMPLE
+
+;; *** Hide all posframes
+;; #+BEGIN_EXAMPLE
+;; M-x posframe-hide-all
+;; #+END_EXAMPLE
+
+;; *** Delete a posframe
+;; #+BEGIN_EXAMPLE
+;; (posframe-delete " *my-posframe-buffer*")
+;; #+END_EXAMPLE
+
+;; *** Delete all posframes
+;; #+BEGIN_EXAMPLE
+;; M-x posframe-delete-all
+;; #+END_EXAMPLE
+
+;; Note: this command will delete all posframe buffers,
+;; suggest not run this command if you are sharing a buffer
+;; between posframe and other packages.
+
+;;; Code:
+;; * posframe's code :CODE:
+(require 'cl-lib)
+
+(defconst posframe-version "0.1.0")
+
+(defgroup posframe nil
+ "Pop a posframe (just a frame) at point"
+ :group 'lisp
+ :prefix "posframe-")
+
+(defcustom posframe-mouse-banish t
+ "Mouse will be moved to (0 , 0) when it is non-nil."
+ :group 'posframe
+ :type 'boolean)
+
+(defcustom posframe-inhibit-double-buffering nil
+ "Set the posframe's frame-parameter: inhibit-double-buffering."
+ :group 'posframe
+ :type 'boolean)
+
+(defvar-local posframe--frame nil
+ "Record posframe's frame.")
+
+(defvar-local posframe--last-position nil
+ "Record the last pixel position of posframe's frame.")
+
+(defvar-local posframe--last-posframe-size nil
+ "Record the last size of posframe's frame.")
+
+(defvar-local posframe--last-parent-frame-size nil
+ "Record the last size of posframe's parent-frame.")
+
+(defvar-local posframe--last-args nil
+ "Record the last arguments of `posframe--create-posframe'.
+
+If these args have changed, posframe will recreate its
+frame.")
+
+(defvar-local posframe--timeout-timer nil
+ "Record the timer to deal with timeout argument of `posframe-show'.")
+
+(defvar-local posframe--refresh-timer nil
+ "Record the timer to deal with refresh argument of `posframe-show'.")
+
+
+(cl-defun posframe--create-posframe (posframe-buffer
+ &key
+ parent-frame
+ foreground-color
+ background-color
+ left-fringe
+ right-fringe
+ font
+ keep-ratio
+ override-parameters)
+ "Create a child-frame for posframe.
+This posframe's buffer is POSFRAME-BUFFER."
+ (let ((left-fringe (or left-fringe 0))
+ (right-fringe (or right-fringe 0))
+ (posframe-buffer (get-buffer-create posframe-buffer))
+ (after-make-frame-functions nil)
+ (args (list parent-frame
+ foreground-color
+ background-color
+ right-fringe
+ left-fringe
+ font
+ keep-ratio
+ override-parameters)))
+ (with-current-buffer posframe-buffer
+ ;; Many variables take effect after call `set-window-buffer'
+ (setq-local left-fringe-width left-fringe)
+ (setq-local right-fringe-width right-fringe)
+ (setq-local fringes-outside-margins 0)
+ (setq-local truncate-lines t)
+ (setq-local mode-line-format nil)
+ (setq-local header-line-format nil)
+ (setq-local cursor-type nil)
+ (setq-local cursor-in-non-selected-windows nil)
+ (setq-local show-trailing-whitespace nil)
+
+ ;; Create child-frame
+ (unless (and (frame-live-p posframe--frame)
+ ;; For speed reason, posframe will reuse
+ ;; existing frame at possible, but when
+ ;; user change args, recreating frame
+ ;; is needed.
+ (equal posframe--last-args args))
+ (posframe--delete-frame posframe-buffer)
+ (setq-local posframe--last-args args)
+ (setq-local posframe--last-position nil)
+ (setq-local posframe--last-posframe-size nil)
+ (setq-local posframe--frame
+ (make-frame
+ `(,@override-parameters
+ ,(when foreground-color
+ (cons 'foreground-color foreground-color))
+ ,(when background-color
+ (cons 'background-color background-color))
+ ,(when font
+ (cons 'font font))
+ (parent-frame . ,(or parent-frame (window-frame)))
+ (keep-ratio ,keep-ratio)
+ (posframe-buffer . ,posframe-buffer)
+ (no-accept-focus . t)
+ (min-width . 0)
+ (min-height . 0)
+ (border-width . 0)
+ (internal-border-width . 0)
+ (vertical-scroll-bars . nil)
+ (horizontal-scroll-bars . nil)
+ (left-fringe . ,left-fringe)
+ (right-fringe . ,right-fringe)
+ (menu-bar-lines . 0)
+ (tool-bar-lines . 0)
+ (line-spacing . 0)
+ (unsplittable . t)
+ (no-other-frame . t)
+ (undecorated . t)
+ (visibility . nil)
+ (cursor-type . nil)
+ (minibuffer . nil)
+ (width . 1)
+ (height . 1)
+ (no-special-glyphs . t)
+ (inhibit-double-buffering . ,posframe-inhibit-double-buffering)
+ ;; Do not save child-frame when use desktop.el
+ (desktop-dont-save . t))))
+ (let ((posframe-window (frame-root-window posframe--frame)))
+ ;; This method is more stable than 'setq mode/header-line-format nil'
+ (set-window-parameter posframe-window 'mode-line-format 'none)
+ (set-window-parameter posframe-window 'header-line-format 'none)
+ (set-window-buffer posframe-window posframe-buffer)))
+ posframe--frame)))
+
+(cl-defun posframe-show (posframe-buffer
+ &key
+ string
+ position
+ poshandler
+ width
+ height
+ min-width
+ min-height
+ x-pixel-offset
+ y-pixel-offset
+ left-fringe
+ right-fringe
+ font
+ foreground-color
+ background-color
+ no-properties
+ keep-ratio
+ override-parameters
+ timeout
+ refresh)
+ "Pop posframe and show STRING at POSITION.
+
+POSITION can be:
+1. A integer number, which regard as a point.
+2. A cons of integer, which regard as absolute X and Y.
+3. Other types, User should set POSHANDLER manual to deal
+ with them.
+
+POSHANDLER is a function with one argument, and return
+a real position. its argument is a plist, which like
+
+ (:position xxx :poshandler xxx
+ :font-height xxx :font-width xxx
+ :posframe xxx :posframe-buffer xxx
+ :parent-frame xxx :parent-window xxx
+ :x-pixel-offset xxx :y-pixel-offset xxx)
+
+by default, poshandler is auto selected based on
+POSITION's type, but user can *force* set one with
+the help of POSHANDLER argument. the below are buildin
+poshandler functions:
+1. `posframe-poshandler-frame-center'
+2. `posframe-poshandler-frame-bottom-left-corner'
+3. `posframe-poshandler-frame-bottom-right-corner'
+4. `posframe-poshandler-window-center'
+5. `posframe-poshandler-window-top-left-corner'
+6. `posframe-poshandler-window-top-right-corner'
+7. `posframe-poshandler-window-bottom-left-corner'
+8. `posframe-poshandler-window-bottom-right-corner'
+9. `posframe-poshandler-point-top-left-corner'
+9. `posframe-poshandler-point-bottom-left-corner'
+
+This posframe's buffer is POSFRAME-BUFFER.
+
+If NO-PROPERTIES is non-nil, The STRING's properties will
+be removed before showed in posframe.
+
+posframe's frame-size can be set by WIDTH and HEIGHT,
+If one of them is nil, posframe's frame-size will fit the
+content of buffer, if you don't want to posframe's
+size too small, MIN-WIDTH and MIN-HEIGTH will be useful
+
+If LEFT-FRINGE or RIGHT-FRINGE is a number, Left fringe or
+right fringe with be showed with number width.
+
+By default, posframe's font is deriverd from current frame
+user can set posframe's font with FONT argument.
+
+By default, posframe's foreground and background color are
+deriverd from current frame, user can set them with the help
+of FOREGROUND-COLOR and BACKGROUND-COLOR.
+
+OVERRIDE-PARAMETERS is very powful, *all* the frame parameters
+used by posframe's frame can be overrided by it.
+
+If TIMEOUT is a number, a delay of number seconds, the posframe
+will auto hide.
+
+If REFRESH is a number, posframe's frame-size will be re-adjust
+every mumber seconds.
+
+you can use `posframe-delete-all' to delete all posframes."
+ (let* ((position (or position (point)))
+ (posframe-buffer (get-buffer-create posframe-buffer))
+ (x-pixel-offset (or x-pixel-offset 0))
+ (y-pixel-offset (or y-pixel-offset 0))
+ (min-width (or min-width 1))
+ (min-height (or min-height 1))
+ (parent-window (selected-window))
+ (parent-frame (window-frame parent-window))
+ (parent-frame-width (frame-pixel-width parent-frame))
+ (parent-frame-height (frame-pixel-height parent-frame))
+ (font-width (default-font-width))
+ (font-height (posframe--get-font-height position))
+ (frame-resize-pixelwise t)
+ posframe)
+
+ (with-current-buffer posframe-buffer
+ ;; Move mouse to (0 . 0)
+ (posframe--mouse-banish parent-frame)
+
+ ;; Create posframe
+ (setq posframe
+ (posframe--create-posframe
+ posframe-buffer
+ :font font
+ :parent-frame parent-frame
+ :left-fringe left-fringe
+ :right-fringe right-fringe
+ :foreground-color foreground-color
+ :background-color background-color
+ :keep-ratio keep-ratio
+ :override-parameters override-parameters))
+
+ ;; Insert string to posframe-buffer.
+ (posframe--insert-string string no-properties)
+
+ ;; Set posframe's size
+ (posframe--set-frame-size
+ posframe height min-height width min-width)
+
+ ;; Move posframe
+ (posframe--set-frame-position
+ posframe
+ (posframe-run-poshandler
+ `(;All poshandlers will get info from this plist.
+ :position ,position
+ :poshandler ,poshandler
+ :font-height ,font-height
+ :font-width ,font-width
+ :posframe ,posframe
+ :posframe-buffer ,posframe-buffer
+ :parent-frame ,parent-frame
+ :parent-window ,parent-window
+ :x-pixel-offset ,x-pixel-offset
+ :y-pixel-offset ,y-pixel-offset))
+ parent-frame-width parent-frame-height)
+
+ ;; Delay hide posframe when timeout is a number.
+ (posframe--run-timeout-timer posframe timeout)
+
+ ;; Re-adjust posframe's size when buffer's content has changed.
+ (posframe--run-refresh-timer
+ posframe refresh height min-height width min-width)
+
+ ;; Do not return anything.
+ nil)))
+
+(defun posframe--get-font-height (position)
+ "Get the font's height at POSITION."
+ (when (integerp position)
+ (if (= position 1)
+ (default-line-height)
+ (aref (font-info
+ (font-at
+ (if (and (= position (point-max)))
+ (- position 1)
+ position)))
+ 3))))
+
+(defun posframe--mouse-banish (frame)
+ "Banish mouse to the (0 . 0) of FRAME.
+FIXME: This is a hacky fix for the mouse focus problem, which like:
+https://github.com/tumashu/posframe/issues/4#issuecomment-357514918"
+ (when (and posframe-mouse-banish
+ (not (equal (cdr (mouse-position)) '(0 . 0))))
+ (set-mouse-position frame 0 0)))
+
+(defun posframe--insert-string (string no-properties)
+ "Insert STRING to current buffer.
+If NO-PROPERTIES is non-nil, all properties of STRING
+will be removed."
+ (when (and string (stringp string))
+ (remove-text-properties
+ 0 (length string) '(read-only t) string)
+ ;; Does inserting string then deleting the before
+ ;; contents reduce flicking? Maybe :-)
+ (goto-char (point-min))
+ (if no-properties
+ (insert (substring-no-properties string))
+ (insert string))
+ (delete-region (point) (point-max))))
+
+(defun posframe--set-frame-size (posframe height min-height width min-width)
+ "Set POSFRAME's size.
+It will set the size by the POSFRAME's HEIGHT, MIN-HEIGHT
+WIDTH and MIN-WIDTH."
+ (if (and width height)
+ (unless (equal posframe--last-posframe-size
+ (cons width height))
+ (set-frame-size posframe width height)
+ (setq-local posframe--last-posframe-size
+ (cons width height)))
+ (fit-frame-to-buffer
+ posframe height min-height width min-width)))
+
+(defun posframe--set-frame-position (posframe position
+ parent-frame-width
+ parent-frame-height)
+ "Move POSFRAME to POSITION.
+This need PARENT-FRAME-WIDTH and PARENT-FRAME-HEIGHT"
+ (unless (and (equal position posframe--last-position)
+ ;; When working frame's size change, re-posit
+ ;; the posframe.
+ (equal posframe--last-parent-frame-size
+ (cons parent-frame-width parent-frame-height)))
+ (set-frame-position posframe (car position) (cdr position))
+ (setq-local posframe--last-position position)
+ (setq-local posframe--last-parent-frame-size
+ (cons parent-frame-width parent-frame-height)))
+ ;; Make posframe's posframe--frame visible
+ (unless (frame-visible-p posframe)
+ (make-frame-visible posframe)))
+
+(defun posframe--run-timeout-timer (posframe secs)
+ "Hide POSFRAME after a delay of SECS seconds."
+ (when (and (numberp secs) (> secs 0))
+ (when (timerp posframe--timeout-timer)
+ (cancel-timer posframe--timeout-timer))
+ (setq-local posframe--timeout-timer
+ (run-with-timer
+ secs nil #'make-frame-invisible posframe))))
+
+(defun posframe--run-refresh-timer (posframe repeat
+ height min-height
+ width min-width)
+ "Refresh POSFRAME every REPEAT seconds.
+
+It will set POSFRAME's size by the posframe's HEIGHT, MIN-HEIGHT,
+WIDTH and MIN-WIDTH."
+ (when (and (numberp repeat) (> repeat 0))
+ (unless (and width height)
+ (when (timerp posframe--refresh-timer)
+ (cancel-timer posframe--refresh-timer))
+ (setq-local posframe--refresh-timer
+ (run-with-timer
+ nil repeat
+ #'(lambda (frame height min-height width min-width)
+ (when (and frame (frame-live-p frame))
+ (fit-frame-to-buffer
+ frame height min-height width min-width)))
+ posframe height min-height width min-width)))))
+
+(defun posframe-hide (posframe-buffer)
+ "Hide posframe which buffer is POSFRAME-BUFFER."
+ (with-current-buffer (get-buffer-create posframe-buffer)
+ (when (frame-live-p posframe--frame)
+ (make-frame-invisible posframe--frame))))
+
+(defun posframe-delete (posframe-buffer)
+ "Delete posframe which buffer POSFRAME-BUFFER."
+ (posframe--delete-frame posframe-buffer)
+ (posframe--kill-buffer posframe-buffer))
+
+(defun posframe--delete-frame (posframe-buffer)
+ "Kill child-frame of posframe.
+This posframe's buffer is POSFRAME-BUFFER."
+ (dolist (frame (frame-list))
+ (let ((buffer (frame-parameter frame 'posframe-buffer)))
+ (when (equal posframe-buffer buffer)
+ (with-current-buffer posframe-buffer
+ (dolist (timer '(posframe--refresh-timer
+ posframe--timeout-timer))
+ (when (timerp timer)
+ (cancel-timer timer))))
+ (delete-frame frame)))))
+
+(defun posframe--kill-buffer (posframe-buffer)
+ "Kill posframe's buffer: POSFRAME-BUFFER."
+ (when (buffer-live-p posframe-buffer)
+ (kill-buffer posframe-buffer)))
+
+;;;###autoload
+(defun posframe-hide-all ()
+ "Hide all posframe's frames."
+ (interactive)
+ (dolist (buffer (buffer-list))
+ (with-current-buffer buffer
+ (when (frame-live-p posframe--frame)
+ (make-frame-invisible posframe--frame)))))
+
+;;;###autoload
+(defun posframe-delete-all ()
+ "Delete all posframe's frames and buffers."
+ (interactive)
+ (dolist (frame (frame-list))
+ (let ((buffer (frame-parameter frame 'posframe-buffer)))
+ (when buffer (delete-frame frame))))
+ (dolist (buffer (buffer-list))
+ (with-current-buffer buffer
+ (when posframe--frame
+ (posframe--kill-buffer buffer)))))
+
+;; Posframe's position handler
+(defun posframe-run-poshandler (info)
+ "Run posframe's position handler.
+
+the structure of INFO can be found in docstring
+of `posframe-show'."
+ (funcall
+ (or (plist-get info :poshandler)
+ (let ((position (plist-get info :position)))
+ (cond ((integerp position)
+ #'posframe-poshandler-point-bottom-left-corner)
+ ((and (consp position)
+ (integerp (car position))
+ (integerp (cdr position)))
+ #'posframe-poshandler-absolute-x-y)
+ (t (error "Posframe: have no valid poshandler")))))
+ info))
+
+(defun posframe-poshandler-absolute-x-y (info)
+ "Posframe's position hanlder.
+
+Deal with (integer . integer) style position,
+the structure of INFO can be found in docstring
+of `posframe-show'."
+ (let ((position (plist-get info :position))
+ (x-pixel-offset (plist-get info :x-pixel-offset))
+ (y-pixel-offset (plist-get info :y-pixel-offset)))
+ (cons (+ (car position) x-pixel-offset)
+ (+ (cdr position) y-pixel-offset))))
+
+(defun posframe-poshandler-point-bottom-left-corner (info &optional font-height)
+ "Posframe's position hanlder.
+
+Get bottom-left-corner pixel position of a point,
+the structure of INFO can be found in docstring
+of `posframe-show'.
+
+Optional argument FONT-HEIGHT ."
+ (let* ((position (plist-get info :position))
+ (x-pixel-offset (plist-get info :x-pixel-offset))
+ (y-pixel-offset (plist-get info :y-pixel-offset))
+ (posframe-width (frame-pixel-width
+ (plist-get info :posframe)))
+ (posframe-height (frame-pixel-height
+ (plist-get info :posframe)))
+ (window (plist-get info :parent-window))
+ (frame (plist-get info :parent-frame))
+ (xmax (frame-pixel-width frame))
+ (ymax (frame-pixel-height frame))
+ (header-line-height (window-header-line-height window))
+ (posn-top-left (posn-at-point position window))
+ (x (+ (car (window-inside-pixel-edges window))
+ (- (or (car (posn-x-y posn-top-left)) 0)
+ (or (car (posn-object-x-y posn-top-left)) 0))
+ x-pixel-offset))
+ (y-top (+ (cadr (window-pixel-edges window))
+ header-line-height
+ (- (or (cdr (posn-x-y posn-top-left)) 0)
+ ;; Fix the conflict with flycheck
+ ;; http://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00537.html
+ (or (cdr (posn-object-x-y posn-top-left)) 0))
+ y-pixel-offset))
+ (font-height (or font-height (plist-get info :font-height)))
+ (y-buttom (+ y-top font-height)))
+ (cons (max 0 (min x (- xmax (or posframe-width 0))))
+ (max 0 (if (> (+ y-buttom (or posframe-height 0)) ymax)
+ (- y-top (or posframe-height 0))
+ y-buttom)))))
+
+(defun posframe-poshandler-point-top-left-corner (info)
+ "Posframe's position hanlder.
+
+Get top-left-corner pixel position of a point,
+the structure of INFO can be found in docstring
+of `posframe-show'."
+ (let ((font-height 0))
+ (posframe-poshandler-point-bottom-left-corner info font-height)))
+
+(defun posframe-poshandler-frame-center (info)
+ "Posframe's position handler.
+
+Get a position which let posframe stay onto its
+parent-frame's center. The structure of INFO can
+be found in docstring of `posframe-show'."
+ (let* ((posframe (plist-get info :posframe))
+ (parent-frame (plist-get info :parent-frame)))
+ (cons (/ (- (frame-pixel-width parent-frame)
+ (frame-pixel-width posframe))
+ 2)
+ (/ (- (frame-pixel-height parent-frame)
+ (frame-pixel-height posframe))
+ 2))))
+
+(defun posframe-poshandler-frame-bottom-left-corner (_info)
+ "Posframe's position handler.
+
+Get a position which let posframe stay onto its parent-frame's
+bottom left corner. The structure of INFO can be found
+in docstring of `posframe-show'."
+ (cons 0 (- 0
+ (window-mode-line-height)
+ (window-pixel-height (minibuffer-window)))))
+
+(defun posframe-poshandler-frame-bottom-right-corner (_info)
+ "Posframe's position handler.
+
+Get a position which let posframe stay onto its parent-frame's
+bottom right corner. The structure of INFO can be found
+in docstring of `posframe-show'."
+ (cons -1 (- 0
+ (window-mode-line-height)
+ (window-pixel-height (minibuffer-window)))))
+
+(defun posframe-poshandler-window-center (info)
+ "Posframe's position handler.
+
+Get a position which let posframe stay onto current window's
+center. The structure of INFO can be found in docstring
+of `posframe-show'."
+ (let* ((posframe (plist-get info :posframe))
+ (parent-window (plist-get info :parent-window))
+ (window-left (window-pixel-left parent-window))
+ (window-top (window-pixel-top parent-window))
+ (window-width (window-pixel-width parent-window))
+ (window-height (window-pixel-height parent-window))
+ (posframe-width (frame-pixel-width posframe))
+ (posframe-height (frame-pixel-height posframe)))
+ (cons (+ window-left (/ (- window-width posframe-width) 2))
+ (+ window-top (/ (- window-height posframe-height) 2)))))
+
+(defun posframe-poshandler-window-top-left-corner (info)
+ "Posframe's position handler.
+
+Get a position which let posframe stay onto current window's
+top left corner. The structure of INFO can be found in
+docstring of `posframe-show'."
+ (let* ((parent-window (plist-get info :parent-window))
+ (window-left (window-pixel-left parent-window))
+ (window-top (window-pixel-top parent-window)))
+ (cons window-left
+ window-top)))
+
+(defun posframe-poshandler-window-top-right-corner (info)
+ "Posframe's position handler.
+
+Get a position which let posframe stay onto current window's
+top right corner. The structure of INFO can be found in
+docstring of `posframe-show'."
+ (let* ((posframe (plist-get info :posframe))
+ (window (plist-get info :parent-window))
+ (window-left (window-pixel-left window))
+ (window-top (window-pixel-top window))
+ (window-width (window-pixel-width window))
+ (posframe-width (frame-pixel-width posframe)))
+ (cons (+ window-left window-width
+ (- 0 posframe-width))
+ window-top)))
+
+(defun posframe-poshandler-window-bottom-left-corner (info)
+ "Posframe's position handler.
+
+Get a position which let posframe stay onto current window's
+bottom left corner. The structure of INFO can be found in
+docstring of `posframe-show'."
+ (let* ((posframe (plist-get info :posframe))
+ (window (plist-get info :parent-window))
+ (window-left (window-pixel-left window))
+ (window-top (window-pixel-top window))
+ (window-height (window-pixel-height window))
+ (posframe-height (frame-pixel-height posframe))
+ (modeline-height (window-mode-line-height)))
+ (cons window-left
+ (+ window-top window-height
+ (- 0 modeline-height posframe-height)))))
+
+(defun posframe-poshandler-window-bottom-right-corner (info)
+ "Posframe's position handler.
+
+Get a position which let posframe stay onto current window's
+bottom right corner. The structure of INFO can be found in
+docstring of `posframe-show'."
+ (let* ((posframe (plist-get info :posframe))
+ (window (plist-get info :parent-window))
+ (window-left (window-pixel-left window))
+ (window-top (window-pixel-top window))
+ (window-width (window-pixel-width window))
+ (window-height (window-pixel-height window))
+ (posframe-width (frame-pixel-width posframe))
+ (posframe-height (frame-pixel-height posframe))
+ (modeline-height (window-mode-line-height)))
+ (cons (+ window-left window-width
+ (- 0 posframe-width))
+ (+ window-top window-height
+ (- 0 modeline-height posframe-height)))))
+
+(provide 'posframe)
+
+;; Local Variables:
+;; coding: utf-8-unix
+;; End:
+
+;;; posframe.el ends here
diff --git a/snapshots/posframe-1.png b/snapshots/posframe-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..8967fa4e4a897dd8ee9852d6dcb3aeec178df738
GIT binary patch
literal 55570
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
GLSTXuwpbki
literal 0
HcmV?d00001
--
2.13.3
[-- Attachment #3: 0002-externals-list-Add-posframe-s-git-url.patch --]
[-- Type: application/octet-stream, Size: 893 bytes --]
From 6862a2d8a3d210502df51ad0066cfe1a073bca22 Mon Sep 17 00:00:00 2001
From: Feng Shu <tumashu@163.com>
Date: Mon, 26 Feb 2018 15:36:19 +0800
Subject: [PATCH 2/2] externals-list: Add posframe's git url.
---
externals-list | 1 +
1 file changed, 1 insertion(+)
diff --git a/externals-list b/externals-list
index ba91a1efd..39b51cf11 100644
--- a/externals-list
+++ b/externals-list
@@ -76,6 +76,7 @@
("pabbrev" :external "https://github.com/phillord/pabbrev.git")
("parsec" :subtree "https://github.com/cute-jumper/parsec.el.git")
("pinentry" :subtree "https://github.com/ueno/pinentry-el.git")
+ ("posframe" :subtree "https://github.com/tumashu/posframe.git")
("psgml" :external "https://github.com/lenst/psgml.git")
("python" :core "lisp/progmodes/python.el")
;;FIXME:("org" :external ??) ;; Need to introduce snapshots!!
--
2.13.3
^ permalink raw reply related [flat|nested] 22+ messages in thread