]> git.llucax.com Git - software/mutt-debian.git/blob - debian/patches/features/xtitles
mutt-patched/sidebar-newonly: integrating Steve Kemp's patch to optionally select...
[software/mutt-debian.git] / debian / patches / features / xtitles
1 # vi: ft=diff
2 This is the xterm title patch as found on the mutt mailing lists.
3
4 * Changes made:
5   - 2007-01-27 myon: using %P caused a segfault, updated status.c to catch
6     menu==NULL.
7   - 2007-02-20 myon: make the note about the xterm_set_titles defaults a
8     comment.
9   - 2008-08-02 myon: move set_xterm_* prototypes into the proper header file
10     (cleaner code, no functional change, evades conflict with sidebar patch)
11
12 == END PATCH
13 Index: mutt/curs_main.c
14 ===================================================================
15 --- mutt.orig/curs_main.c       2009-06-25 12:35:37.000000000 +0200
16 +++ mutt/curs_main.c    2009-06-25 12:35:44.000000000 +0200
17 @@ -110,6 +110,19 @@
18  
19  extern size_t UngetCount;
20  
21 +#define ASCII_CTRL_G                  0x07
22 +#define ASCII_CTRL_OPEN_SQUARE_BRAKET 0x1b
23 +
24 +void set_xterm_title_bar(char *title)
25 +{
26 +  fprintf(stderr ,"%c]2;%s%c", ASCII_CTRL_OPEN_SQUARE_BRAKET, title, ASCII_CTRL_G);
27 +}
28 +
29 +void set_xterm_icon_name(char *name)
30 +{
31 +  fprintf(stderr, "%c]1;%s%c", ASCII_CTRL_OPEN_SQUARE_BRAKET, name, ASCII_CTRL_G);
32 +}
33 +
34  void index_make_entry (char *s, size_t l, MUTTMENU *menu, int num)
35  {
36    format_flag flag = M_FORMAT_MAKEPRINT | M_FORMAT_ARROWCURSOR | M_FORMAT_INDEX;
37 @@ -566,6 +579,13 @@
38         SETCOLOR (MT_COLOR_NORMAL);
39          BKGDSET (MT_COLOR_NORMAL);
40         menu->redraw &= ~REDRAW_STATUS;
41 +       if (option(OPTXTERMSETTITLES))
42 +       {
43 +         menu_status_line (buf, sizeof (buf), menu, NONULL (XtermTitle));
44 +         set_xterm_title_bar(buf);
45 +         menu_status_line (buf, sizeof (buf), menu, NONULL (XtermIcon));
46 +         set_xterm_icon_name(buf);
47 +       }
48        }
49  
50        menu->redraw = 0;
51 Index: mutt/globals.h
52 ===================================================================
53 --- mutt.orig/globals.h 2009-06-25 12:35:37.000000000 +0200
54 +++ mutt/globals.h      2009-06-25 12:35:44.000000000 +0200
55 @@ -141,6 +141,8 @@
56  WHERE char *Tochars;
57  WHERE char *Username;
58  WHERE char *Visual;
59 +WHERE char *XtermTitle;
60 +WHERE char *XtermIcon;
61  
62  WHERE char *CurrentFolder;
63  WHERE char *LastFolder;
64 Index: mutt/init.c
65 ===================================================================
66 --- mutt.orig/init.c    2009-06-25 12:35:42.000000000 +0200
67 +++ mutt/init.c 2009-06-25 12:35:44.000000000 +0200
68 @@ -1892,6 +1892,26 @@
69         toggle_option (MuttVars[idx].data);
70        else
71         set_option (MuttVars[idx].data);
72 +
73 +      /* sanity check for xterm */
74 +      if ((mutt_strcmp (MuttVars[idx].option, "xterm_set_titles") == 0)
75 +               && option (OPTXTERMSETTITLES))
76 +      {
77 +       char *ep = getenv ("TERM");
78 +       /* Make sure that the terminal can take the control codes */
79 +       if (ep == NULL) unset_option (MuttVars[idx].data);
80 +       else if (mutt_strncasecmp (ep, "xterm", 5) &&
81 +                mutt_strncasecmp (ep, "color-xterm", 11) &&
82 +                mutt_strncasecmp (ep, "eterm", 5) &&
83 +                mutt_strncasecmp (ep, "kterm", 5) &&
84 +                mutt_strncasecmp (ep, "nxterm", 6) &&
85 +                mutt_strncasecmp (ep, "putty", 5) &&
86 +                mutt_strncasecmp (ep, "screen", 6) &&
87 +                mutt_strncasecmp (ep, "cygwin", 6) &&
88 +                mutt_strncasecmp (ep, "rxvt", 4) )
89 +         unset_option (MuttVars[idx].  data);
90 +
91 +      }
92      }
93      else if (myvar || DTYPE (MuttVars[idx].type) == DT_STR ||
94              DTYPE (MuttVars[idx].type) == DT_PATH ||
95 Index: mutt/init.h
96 ===================================================================
97 --- mutt.orig/init.h    2009-06-25 12:35:42.000000000 +0200
98 +++ mutt/init.h 2009-06-25 12:35:44.000000000 +0200
99 @@ -3337,6 +3337,27 @@
100    ** Also see the $$read_inc, $$net_inc and $$time_inc variables and the
101    ** ``$tuning'' section of the manual for performance considerations.
102    */
103 +  {"xterm_icon",       DT_STR,   R_BOTH, UL &XtermIcon,  UL "M%?n?AIL&ail?"},
104 +  /*
105 +  ** .pp
106 +  ** Controls the format of the icon title, as long as xterm_set_titles
107 +  ** is enabled. This string is identical in formatting to the one used by
108 +  ** ``$$status_format''.
109 +  */
110 +  {"xterm_set_titles", DT_BOOL,  R_BOTH, OPTXTERMSETTITLES, 0},
111 +  /* The default must be off to force in the validity checking. */
112 +  /*
113 +  ** .pp
114 +  ** Controls whether mutt sets the xterm title bar and icon name
115 +  ** (as long as you are in an appropriate terminal).
116 +  */
117 +  {"xterm_title",      DT_STR,   R_BOTH, UL &XtermTitle, UL "Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?"},
118 +  /*
119 +  ** .pp
120 +  ** Controls the format of the title bar of the xterm provided that
121 +  ** xterm_set_titles has been set. This string is identical in formatting
122 +  ** to the one used by ``$$status_format''.
123 +  */
124    /*--*/
125    { NULL, 0, 0, 0, 0 }
126  };
127 Index: mutt/mutt.h
128 ===================================================================
129 --- mutt.orig/mutt.h    2009-06-25 12:35:37.000000000 +0200
130 +++ mutt/mutt.h 2009-06-25 12:35:44.000000000 +0200
131 @@ -446,6 +446,7 @@
132    OPTWRAPSEARCH,
133    OPTWRITEBCC,         /* write out a bcc header? */
134    OPTXMAILER,
135 +  OPTXTERMSETTITLES,
136  
137    OPTCRYPTUSEGPGME,
138    OPTCRYPTUSEPKA,
139 Index: mutt/pager.c
140 ===================================================================
141 --- mutt.orig/pager.c   2009-06-25 12:35:37.000000000 +0200
142 +++ mutt/pager.c        2009-06-25 12:35:44.000000000 +0200
143 @@ -1784,6 +1784,13 @@
144        }
145        BKGDSET (MT_COLOR_NORMAL);
146        SETCOLOR (MT_COLOR_NORMAL);
147 +      if (option(OPTXTERMSETTITLES))
148 +      {
149 +       menu_status_line (buffer, sizeof (buffer), index, NONULL (XtermTitle));
150 +       set_xterm_title_bar(buffer);
151 +       menu_status_line (buffer, sizeof (buffer), index, NONULL (XtermIcon));
152 +       set_xterm_icon_name(buffer);
153 +      }
154      }
155  
156      if ((redraw & REDRAW_INDEX) && index)
157 Index: mutt/status.c
158 ===================================================================
159 --- mutt.orig/status.c  2009-06-25 12:35:37.000000000 +0200
160 +++ mutt/status.c       2009-06-25 12:35:44.000000000 +0200
161 @@ -195,6 +195,8 @@
162        break;
163  
164      case 'P':
165 +      if (!menu)
166 +       break;
167        if (menu->top + menu->pagelen >= menu->max)
168         cp = menu->top ? "end" : "all";
169        else
170 Index: mutt/mutt_menu.h
171 ===================================================================
172 --- mutt.orig/mutt_menu.h       2009-06-25 12:35:37.000000000 +0200
173 +++ mutt/mutt_menu.h    2009-06-25 12:35:44.000000000 +0200
174 @@ -103,6 +103,8 @@
175  void menu_current_bottom (MUTTMENU *);
176  void menu_check_recenter (MUTTMENU *);
177  void menu_status_line (char *, size_t, MUTTMENU *, const char *);
178 +void set_xterm_title_bar (char *title);
179 +void set_xterm_icon_name (char *name);
180  
181  MUTTMENU *mutt_new_menu (int);
182  void mutt_menuDestroy (MUTTMENU **);