From: joakim@verona.se
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: Adding parameters to windows
Date: Wed, 04 Jun 2008 13:01:54 +0200 [thread overview]
Message-ID: <m3lk1lv4yl.fsf@verona.se> (raw)
In-Reply-To: <jwvlk203jav.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Fri, 23 May 2008 15:47:17 -0400")
[-- Attachment #1: Type: text/plain, Size: 1436 bytes --]
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> Your patch needs a few tweaks, e.g. to adjust it to the coding
> conventions:
> - The docstring of window-parameters is poor.
> E.g. the first line doesn't say anything. The second line is indented
> in the source, which looks bad when you do C-h f window-parameters.
> nil is an aliast as well, so there's no need to mention it explicitly.
> - I'd prefer to have `window-parameter' rather than `window-parameters'.
> - The docstring of set-window-parameter needs to start with a capital
> letter and end with a "." and should mention its arguments.
> Feel free to plagiarize set-frame-parameter.
> - The comment for window_parameters refers to `pin' and `group'.
> - See http://www.gnu.org/prep/standards/standards.html#Change-Logs for
> the format to use in ChangeLogs:
> - put together changes to a file.
> - your changelog seems to say you've changed `DEFUN'.
> - there's a missing space after colon in "(window:Added".
> - And the "Added" should be "Add" of course.
I've tried to adress your concerns in the attached patch.
A reworked ChangeLog entry:
2008-06-03 Joakim Verona <joakim@verona.se>
* window.h (window_parameters): Declare
* window.c: (Fwindow_parameters): New defun.
(Fwindow_parameter): New defun.
(Fset_window_parameter): New defun.
(syms_of_window): Defsubr the new defuns.
(make_window): initialize window_parameters to nil
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: winprop.diff --]
[-- Type: text/x-patch, Size: 2847 bytes --]
=== modified file 'src/window.c'
--- src/window.c 2008-06-02 12:09:12 +0000
+++ src/window.c 2008-06-03 14:08:13 +0000
@@ -273,6 +273,7 @@
p->frame = Qnil;
p->display_table = Qnil;
p->dedicated = Qnil;
+ p->window_parameters = Qnil;
p->pseudo_window_p = 0;
bzero (&p->cursor, sizeof (p->cursor));
bzero (&p->last_cursor, sizeof (p->last_cursor));
@@ -1324,6 +1325,51 @@
return w->dedicated;
}
+DEFUN ("window-parameters", Fwindow_parameters, Swindow_parameters,
+ 1, 1, 0,
+ doc: /* Return the parameters-alist of window WINDOW.
+It is a list of elements of the form (PARM . VALUE), where PARM is a symbol.
+The meaningful PARMs depend on the kind of window.
+If WINDOW is omitted, return information on the currently selected window. */)
+ (window)
+ Lisp_Object window;
+{
+ if (NILP (window))
+ window = selected_window;
+ return decode_window (window)->window_parameters;
+}
+
+DEFUN ("window-parameter", Fwindow_parameter, Swindow_parameter,
+ 2, 2, 0,
+ doc: /* Return WINDOW's value for parameter PARAMETER.
+If WINDOW is nil, describe the currently selected window. */)
+ (window,parameter)
+ Lisp_Object window,parameter;
+{
+ if (NILP (window))
+ window = selected_window;
+ return Fassq (parameter, decode_window (window)->window_parameters);
+}
+
+
+DEFUN ("set-window-parameter", Fset_window_parameter,
+ Sset_window_parameter, 3, 3, 0,
+ doc: /* set window parameters */)
+ (window, prop, val)
+ Lisp_Object window, prop, val;
+{
+ register struct window *w = decode_window (window);
+ register Lisp_Object old_alist_elt;
+
+ old_alist_elt = Fassq (prop, w->window_parameters);
+ if (EQ (old_alist_elt, Qnil))
+ w->window_parameters = Fcons (Fcons (prop, val), w->window_parameters);
+ else
+ Fsetcdr (old_alist_elt, val);
+ return w->window_parameters;
+}
+
+
DEFUN ("window-display-table", Fwindow_display_table, Swindow_display_table,
0, 1, 0,
doc: /* Return the display-table that WINDOW is using.
@@ -7687,6 +7733,10 @@
defsubr (&Sset_window_vscroll);
defsubr (&Scompare_window_configurations);
defsubr (&Swindow_list);
+ defsubr (&Swindow_parameters);
+ defsubr (&Swindow_parameter);
+ defsubr (&Sset_window_parameter);
+
}
void
=== modified file 'src/window.h'
--- src/window.h 2008-05-15 09:24:57 +0000
+++ src/window.h 2008-06-03 13:35:47 +0000
@@ -228,6 +228,10 @@
enlarged. */
Lisp_Object orig_total_lines, orig_top_line;
+ /* an alist with parameteres that modifies behaviour of certain window operations.
+ */
+ Lisp_Object window_parameters;
+
/* No Lisp data may follow below this point without changing
mark_object in alloc.c. The member current_matrix must be the
first non-Lisp member. */
[-- Attachment #3: Type: text/plain, Size: 19 bytes --]
--
Joakim Verona
next prev parent reply other threads:[~2008-06-04 11:01 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-15 17:51 Adding parameters to windows Stefan Monnier
2008-05-23 14:10 ` joakim
2008-05-23 19:47 ` Stefan Monnier
2008-05-23 20:28 ` joakim
2008-06-04 11:01 ` joakim [this message]
2008-06-04 11:18 ` David Kastrup
2008-06-04 11:24 ` joakim
2008-06-04 11:46 ` David Kastrup
2008-06-04 15:10 ` Stefan Monnier
2008-06-04 15:58 ` joakim
2008-06-04 17:24 ` Stefan Monnier
2008-06-04 21:13 ` Juanma Barranquero
2008-06-04 21:25 ` joakim
2008-06-04 21:56 ` Juanma Barranquero
2008-06-04 22:05 ` joakim
2008-06-04 21:27 ` Juanma Barranquero
2008-06-05 2:07 ` Stefan Monnier
2008-06-05 3:25 ` Juanma Barranquero
-- strict thread matches above, loose matches on Subject: below --
2008-05-16 23:37 Seiji Zenitani
2008-05-20 1:17 ` Stefan Monnier
2008-06-03 9:04 ` Seiji Zenitani
2008-06-03 17:38 ` Glenn Morris
2008-06-04 6:46 ` Jan Djärv
2008-06-04 7:08 ` Glenn Morris
2008-06-04 9:10 ` Miles Bader
2008-06-05 1:45 ` Seiji Zenitani
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3lk1lv4yl.fsf@verona.se \
--to=joakim@verona.se \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.