emacs-devel
[Top][All Lists]
Advanced

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

Re: Gtk tabs in emacs, new branch.


From: alin.s
Subject: Re: Gtk tabs in emacs, new branch.
Date: Fri, 9 Apr 2010 00:23:40 -0700 (PDT)



Jan Djärv wrote:
> 
> Hello.
> 
> I've published a new branch (I hope, it is the first time I do this) that
> adds 
> Gtk+ tabs to Emacs, it is at bzr.savannah.gnu.org/srv/bzr/emacs/gtk-tabs.
> 
> Tabs isn't visible internally, it looks like just one frame at the lisp
> level. 
>     Window configurations are used when switching between tabs.  I think
> this 
> may cause flicker on slower machines.  Making Emacs use Gtk+ double
> buffering 
> here would help.  I may violate running Lisp from C restrictions here, but
> I 
> am not sure.  Tabs most likely introduces new frame sizing errors.
> 
> The TODO file talks about tabs on each window.  To make this happen, at
> least 
> for Gtk+, each window needs to be its own widget, instead of one widget
> per 
> frame as we have now.  This is a bigger task.
> 
> You can drag tabs to reorder them, drop them on another frame to move it
> there
> and drop on the root window to create a new frame.
> 
> The tabs themselves should be smaller IMHO, but the x to delete a tab
> makes 
> them larger than the text.
> 
> Lisp code is in native-tabs.el.  Keybindings are:
> 
>        (global-set-key "\C-x7\C-f" 'find-file-new-tab)
>        (global-set-key "\C-x70" 'tab-delete)
>        (global-set-key "\C-x71" 'tab-delete-other)
>        (global-set-key "\C-x72" 'tab-new)
>        (global-set-key "\C-x7f" 'find-file-new-tab)
>        (global-set-key "\C-x7o" 'tab-next)
>        (global-set-key "\C-x7n" 'tab-next)
>        (global-set-key "\C-x7p" 'tab-previous)))
> 
> 
> The lisp interface is:
> 
> (find-file-new-tab (filename &optional wildcards)
> 
> Edit file FILENAME, in a new tab.
> 
> (tab-new &optional LABEL FRAME)
> 
> Create a new tab with label LABEL in frame FRAME.
> If LABEL is nil, use current buffer name.
> FRAME nil means use the selected frame.
> 
> Returns the key for the tab, which can be passed to `tab-delete'.
> 
> (tab-delete &optional KEY FRAME)
> 
> Remove tab KEY from frame FRAME.
> KEY is what `tab-new' returned or nil, which means the current tab.
> FRAME nil means use the selected frame.
> 
> (tab-delete-other &optional FRAME)
> 
> Remove all tabs from frame FRAME except the current one.
> FRAME nil means use the selected frame.
> 
> (tab-set-label LABEL &optional FRAME)
> 
> Set label for the current tab in frame FRAME to LABEL.
> LABEL nil means use current buffer name.
> FRAME nil means use the selected frame.
> 
> (tab-next &optional FRAME)
> 
> Go to the next tab on frame FRAME.
> Wrap around to the beginning if current tab is last.
> FRAME nil means use the selected frame.
> 
> (tab-previous &optional FRAME)
> 
> Go to the previous tab on frame FRAME.
> Wrap around to the end if current tab is first.
> FRAME nil means use the selected frame.
> 
> I'm sure there are tons of bugs.  I have not compiled this tree for
> anything 
> other than Gtk+.
> 
>       Jan D.
> 
> 
>  
> 


Hi,


I worked on tabs, and after I did something general at C level, I realised
that I could have done better. Unfortunately, for now I cannot continue to
work on that, but I can do in in about 6 months. I can do the interface at C
level.

For me a tab will  be neither a window configuration, nor a frame, but it
will act according to an initialization function written in lisp. Every
event will have associated a script, like switch, etc. It is useful also for
me to insert an environment of tab-local variables.

In this manner, I could do it in 6 months for all.

If you work on tabs and install a definitive version, please tell me whether
it makes sense for me to implement my version in future, when I have time.




Alin




-- 
View this message in context: 
http://old.nabble.com/Gtk-tabs-in-emacs%2C-new-branch.-tp28108550p28188551.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





reply via email to

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