aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier2007-09-20 21:44:06 +0000
committerStefan Monnier2007-09-20 21:44:06 +0000
commitc5911e55780cb503c6ebf14628a5d346b740eb48 (patch)
tree390f140e6193d8e50840dd5a6e59676963ad19c7 /src
parent9b49c097a792bb6f20bfe3541f40beb22f969ed7 (diff)
downloademacs-c5911e55780cb503c6ebf14628a5d346b740eb48.tar.gz
emacs-c5911e55780cb503c6ebf14628a5d346b740eb48.zip
(get_terminal): Don't accept integers to represent terminals.
(Fterminal_name, Fterminal_parameters, Fterminal_parameter) (Fset_terminal_parameter): Work with dead terminals as well. (Fmodify_terminal_parameters): Remove.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/terminal.c75
2 files changed, 14 insertions, 66 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 44c04fcb940..2830f7fa376 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,10 @@
12007-09-20 Stefan Monnier <monnier@iro.umontreal.ca> 12007-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * terminal.c (get_terminal): Don't accept integers to represent terminals.
4 (Fterminal_name, Fterminal_parameters, Fterminal_parameter)
5 (Fset_terminal_parameter): Work with dead terminals as well.
6 (Fmodify_terminal_parameters): Remove.
7
3 * terminal.c (get_terminal): Handle terminals. 8 * terminal.c (get_terminal): Handle terminals.
4 Make sure the terminal returned is live. 9 Make sure the terminal returned is live.
5 (create_terminal): Use allocate_terminal. 10 (create_terminal): Use allocate_terminal.
diff --git a/src/terminal.c b/src/terminal.c
index 39407507108..46ffb3c2dc8 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -208,21 +208,6 @@ get_terminal (Lisp_Object terminal, int throw)
208 if (TERMINALP (terminal)) 208 if (TERMINALP (terminal))
209 result = XTERMINAL (terminal); 209 result = XTERMINAL (terminal);
210 210
211 else if (INTEGERP (terminal))
212 {
213 /* FIXME: Get rid of the use of integers to represent terminals. */
214 struct terminal *t;
215
216 for (t = terminal_list; t; t = t->next_terminal)
217 {
218 if (t->id == XINT (terminal))
219 {
220 result = t;
221 eassert (t->name != NULL);
222 break;
223 }
224 }
225 }
226 else if (FRAMEP (terminal)) 211 else if (FRAMEP (terminal))
227 { 212 {
228 result = FRAME_TERMINAL (XFRAME (terminal)); 213 result = FRAME_TERMINAL (XFRAME (terminal));
@@ -428,12 +413,10 @@ selected frame's terminal). */)
428 (terminal) 413 (terminal)
429 Lisp_Object terminal; 414 Lisp_Object terminal;
430{ 415{
431 struct terminal *t = get_terminal (terminal, 1); 416 struct terminal *t
417 = TERMINALP (terminal) ? XTERMINAL (terminal) : get_terminal (terminal, 1);
432 418
433 if (t->name) 419 return t->name ? build_string (t->name) : Qnil;
434 return build_string (t->name);
435 else
436 return Qnil;
437} 420}
438 421
439 422
@@ -484,7 +467,8 @@ frame's terminal). */)
484 (terminal) 467 (terminal)
485 Lisp_Object terminal; 468 Lisp_Object terminal;
486{ 469{
487 struct terminal *t = get_terminal (terminal, 1); 470 struct terminal *t
471 = TERMINALP (terminal) ? XTERMINAL (terminal) : get_terminal (terminal, 1);
488 return Fcopy_alist (t->param_alist); 472 return Fcopy_alist (t->param_alist);
489} 473}
490 474
@@ -497,54 +481,13 @@ frame's terminal). */)
497 Lisp_Object parameter; 481 Lisp_Object parameter;
498{ 482{
499 Lisp_Object value; 483 Lisp_Object value;
500 struct terminal *t = get_terminal (terminal, 1); 484 struct terminal *t
485 = TERMINALP (terminal) ? XTERMINAL (terminal) : get_terminal (terminal, 1);
501 CHECK_SYMBOL (parameter); 486 CHECK_SYMBOL (parameter);
502 value = Fcdr (Fassq (parameter, t->param_alist)); 487 value = Fcdr (Fassq (parameter, t->param_alist));
503 return value; 488 return value;
504} 489}
505 490
506DEFUN ("modify-terminal-parameters", Fmodify_terminal_parameters,
507 Smodify_terminal_parameters, 2, 2, 0,
508 doc: /* Modify the parameters of terminal TERMINAL according to ALIST.
509ALIST is an alist of parameters to change and their new values.
510Each element of ALIST has the form (PARM . VALUE), where PARM is a symbol.
511
512TERMINAL can be a terminal id, a frame or nil (meaning the selected
513frame's terminal). */)
514 (terminal, alist)
515 Lisp_Object terminal;
516 Lisp_Object alist;
517{
518 Lisp_Object tail, prop, val;
519 struct terminal *t = get_terminal (terminal, 1);
520 int length = XINT (Fsafe_length (alist));
521 int i;
522 Lisp_Object *parms = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
523 Lisp_Object *values = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
524
525 /* Extract parm names and values into those vectors. */
526
527 i = 0;
528 for (tail = alist; CONSP (tail); tail = Fcdr (tail))
529 {
530 Lisp_Object elt;
531
532 elt = Fcar (tail);
533 parms[i] = Fcar (elt);
534 values[i] = Fcdr (elt);
535 i++;
536 }
537
538 /* Now process them in reverse of specified order. */
539 for (i--; i >= 0; i--)
540 {
541 prop = parms[i];
542 val = values[i];
543 store_terminal_param (t, prop, val);
544 }
545 return Qnil;
546}
547
548DEFUN ("set-terminal-parameter", Fset_terminal_parameter, 491DEFUN ("set-terminal-parameter", Fset_terminal_parameter,
549 Sset_terminal_parameter, 3, 3, 0, 492 Sset_terminal_parameter, 3, 3, 0,
550 doc: /* Set TERMINAL's value for parameter PARAMETER to VALUE. 493 doc: /* Set TERMINAL's value for parameter PARAMETER to VALUE.
@@ -557,7 +500,8 @@ frame's terminal). */)
557 Lisp_Object parameter; 500 Lisp_Object parameter;
558 Lisp_Object value; 501 Lisp_Object value;
559{ 502{
560 struct terminal *t = get_terminal (terminal, 1); 503 struct terminal *t
504 = TERMINALP (terminal) ? XTERMINAL (terminal) : get_terminal (terminal, 1);
561 return store_terminal_param (t, parameter, value); 505 return store_terminal_param (t, parameter, value);
562} 506}
563 507
@@ -613,7 +557,6 @@ The function should accept no arguments. */);
613 defsubr (&Sterminal_name); 557 defsubr (&Sterminal_name);
614 defsubr (&Sterminal_parameters); 558 defsubr (&Sterminal_parameters);
615 defsubr (&Sterminal_parameter); 559 defsubr (&Sterminal_parameter);
616 defsubr (&Smodify_terminal_parameters);
617 defsubr (&Sset_terminal_parameter); 560 defsubr (&Sset_terminal_parameter);
618 561
619 Fprovide (intern ("multi-tty"), Qnil); 562 Fprovide (intern ("multi-tty"), Qnil);