emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: just-the-text Emacs frame


From: Mohsen BANAN
Subject: Re: just-the-text Emacs frame
Date: Thu, 02 Jun 2011 13:19:49 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

>>>>> On Thu, 02 Jun 2011 12:41:25 -0500, Ted Zlatanov <address@hidden> said:
  Ted> On Thu, 02 Jun 2011 08:43:55 -0700 Mohsen BANAN <address@hidden> wrote: 
  >>>>>>> On Thu, 02 Jun 2011 08:15:31 -0500, Ted Zlatanov <address@hidden> 
said:


  MB> Please let live emacs-panels consist of live emacs-tiles.
  Ted> ...
  MB> So, an emacs-panel would not be simply displaying a buffer, but
  MB> possibly a series of buffers (tiles).

  Ted> Should those tiles be Emacs windows or buffer-level facilities?

I wrote that poorly.

Usually not emacs windows.

In the concrete, emacs-panel would be simply
displaying a buffer but in the abstract the
emacs-panel buffer is the aggregation of a series
of emacs-tiles (likely buffers). 

I'll be expanding on this in the context of an
example below.

  MB> A live emacs-tile may optionally have a clickable (touchable)
  MB> function. So, in addition to being "live" it is optionally
  MB> "active". Each emacs-tile may have an "activate" function.

  Ted> That should be a property of the text produced by the "update" function.

Possible to do it that way but there are also
advantages for an entire emacs-tile to be declared
active to the emacs-panel. 

More on this in the example below.


  MB> The process of splitting an emacs-panel into emacs-tiles can be
  MB> based on something like Lars's (gnus-add-configuration).

  Ted> Can you provide an example?  I don't know exactly what you mean here.

Gnus provides a facility for structuring a frame
into multiple windows based on horizontal/vertical
box specifications.

On a wide screen, mine is this:

(defun bystar:mail:display:frame-wide ()
  "On a Wide Frame"
  (interactive)

  (gnus-add-configuration
   '(summary
     (horizontal 1.0
                 (vertical 0.6 (summary 1.0 point))
                 (vertical 1.0 (group 1.0)))))

  (gnus-add-configuration
   '(article
     (horizontal 1.0
                 (vertical 0.6 (summary 0.25 point) (article 1.0) )
                 (vertical 1.0  ("*BBDB*" 1.0) (score-trace 0.1)))))
  )

So, I am proposing that similarly an emacs-panel can be
devided into emacs-tiles.

The example below explains it more.

Panel of Tiles Example:
-----------------------

Consider that we were trying to mimic what 
Windows 7 Mobile is doing in:
  
  http://www.blogcdn.com/www.engadget.com/media/2010/02/02-15-10winphone2.jpg

There will be 1 emacs-panel containing 7
emacs-tiles.

So, we need to:

    - Specify 7 emacs-tiles. (6 squares 1 rectangle
      in that picture.)
    - Specify lay out and sizes of the tiles within the
      panel. Based on something similar to gnus-add-configuration.
    - Specify the emacs-panel's overall size ... and
      make it contain the 7 emacs-tiles.

As you said, a tile in a panel is not same as a 
window in a frame.

The horizontal/vertical dividers for the tiles
could be as simple as lines (thin dividers -- not scroll bars).

I have a preference for the "active" abstraction
for the entire tile to be optionally deligated to
the panel manager as opposed to always being a
property of the text inside of the tile.

The idea is that on a handset you would always
take it for granted that touching (clicking) a
tile will always do something. 

My motivation is to facilitate getting things
started towards Emacs Mobile. The maping between
the container of a set of tiles into a panel can
be at frame or window level. May be we need a
separate abstraction name for the container of a
set of tiles.

With something like this (panels of tiles) in
place, emacs can quickly be made quite usable on a
touch based handset.

On a large screen, outside of the handset usage,
using you own example:

(emacs-panel-popup-add
 "status" :function
 (lambda ()
   (format "%s\n%s\n%s\n%s"
           (format-time-string "%H:%M %Y-%m-%d" (current-time))
           (battery-format battery-echo-area-format (funcall
                                                     battery-status-function))
           (timeclock-status-string)
           (shell-command-to-string "nmcli -p  dev"))))

Using tiles, you could be creating 4 tiles for 
each of:

           (format-time-string "%H:%M %Y-%m-%d" (current-time))

           (battery-format battery-echo-area-format (funcall
                                                     battery-status-function))

           (timeclock-status-string)

           (shell-command-to-string "nmcli -p  dev")

With tile dividers between them and separate
update functions ...

What do you think?

Thanks.

...Mohsen



reply via email to

[Prev in Thread] Current Thread [Next in Thread]