To: "Emacs development discussions." <emacs-devel.gnu.org>
Subject: emacs enhancements: fringe, .authinfo, etc
From: Marco Munari 17486.16140 <mar.develops@allerta.it>
Gcc: nnfolder+archive:mail.sent-2006-04
Face: iVBORw0KGgoAAAANSUhEUgAAABAAAAAOBAMAAADUAYG5AAAAMFBMVEVmLnCAgn+EhoOIioeNj4yRk5CYmpefoZ6jpaKpq6ivsa62uLS6vLnBw8DJy8h7fXrqFMmXAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAABsSURBVAjXY2BgYODsZICAGeUQmntaAYRxOwxC8x4xgDDuOPHuaGBLZeC71nU7LKJiJsO7jvAlRuZlDQx3SyKVVMVLgWq3TZafVCTAwMCzK/DDSnmgpjPL7TkbPwAZd6c7lBuBjDnbytASAKQBe1ofD2Lqno4AAAAASUVORK5CYII=

Dear emacs developers,

I'm here again, to enlighten the beautiful logical instrument
that we use to create: emacs.

the following link contains my patch to:
- introduce fringe-inactive face and the code to handle it,
  the selected window results more hilighted, including the input line,
  when you press M-x or emacs decide to ask you something in the input line,
  you will see the current window(emacs terminology) less in evidence
  and the input line hilighted in the fringe space.
  Moreover  C-x o  (other-window)  make in evidence the current window
  not only in the mode-line below the buffer, but also in each side of
  the window in fringe space (using fringe xor fringe-inactive faces).
- introduce custom fringe-standard-bitmap-size (the default fringe
  bitmap wasted space, eg. in half fringe-mode the default bitmaps weren't
  appropriate), you can choose your preferred size for continued arrow etc..
  by M-x customize-variable fringe-standard-bitmap-size
- introduce login distinction for .authinfo file (without this patch only one
  login for each machine is permitted)
and other changements that I made.

http://www.allerta.it/pub/emacs/mar_emacs_cvs.patch

All the best,
MARco
-- 
http://xref.mm.homeunix.org:8380/~u17486.16140/mail/enlighten_emacs,en
x(t),y(t) = th(3t-34.5)*e^[-(3t-34.5)^2]/2-4.3+e^(-1.8/t^2)/(.8*atg(t-
3)+2)(t-1.8)-.3th(5t-42.5),(1.4e^[-(3t-34.5)^2]+1-sgn[|t-8.5|-.5]*1.5*
|sin(pi*t)|^[2e^(-(t-11.5)^2)+.5+e^(-(.6t-3.3)^2)])/(.5+t)+1  ; 0<t<14
						http://www.allerta.it/

[the mail end here, but this is the link content, so the patch follow]


Copyright(C) 2004, 2005, 2006 idea&realization by Marco Munari <mar allerta.it>

This patch is free software by Marco Munari, applicable to the current
cvs version of GNU emacs.

This patch is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.


Index: lisp/faces.el
===================================================================
introduces new ``fringe-inactive'' face, applied to all
not active emacs windows incuding command input ``window''.
M-x customize-group fringe  pemits also customization of the new fringe faces.

RCS file: /cvsroot/emacs/emacs/lisp/faces.el,v
retrieving revision 1.348
diff -u -r1.348 faces.el
--- lisp/faces.el	6 Feb 2006 14:33:33 -0000	1.348
+++ lisp/faces.el	22 Apr 2006 12:36:35 -0000
@@ -2140,9 +2140,20 @@
      :background "gray"))
   "Basic face for the fringes to the left and right of windows under X."
   :version "21.1"
+  :group 'fringe
   :group 'frames
   :group 'basic-faces)
 
+(defface fringe-inactive
+  '((t
+     :inherit mode-line-inactive))
+  "Basic face for the fringes of active input emacs windows."
+  :version "22.0"
+  :group 'fringe
+  :group 'frames
+  :group 'basic-faces)
+;(put 'fringe-active 'face-alias 'fringe) ;conceptual aliasing is deprecable
+
 (defface scroll-bar '()
   "Basic face for the scroll bar colors under X."
   :version "21.1"
Index: lisp/fringe.el
===================================================================
changed some visual symbol to smaller and more intuitive bitmaps images,
and better relatively positioned.
Notice: I created and used this bitmaps since fringe functionality was
introduced in xdisp.c; at that time, fringe was not extensible.
Anyway i moved my bitmaps here, introducing the possibility to customize
the new ``fringe-standard-bitmap-size'' variable as indicated by Kim Storm.

RCS file: /cvsroot/emacs/emacs/lisp/fringe.el,v
retrieving revision 1.27
diff -u -r1.27 fringe.el
--- lisp/fringe.el	21 Feb 2006 11:39:46 -0000	1.27
+++ lisp/fringe.el	22 Apr 2006 12:36:35 -0000
@@ -91,7 +91,7 @@
 
 ;; Control presence of fringes
 
-(defvar fringe-mode)
+;(defvar fringe-mode) see defvar desc
 
 (defun set-fringe-mode-1 (ignore value)
   "Call `set-fringe-mode' with VALUE.
@@ -278,6 +278,125 @@
               0)
            (float (frame-char-width))))
 
+
+;(defvar fringe-standard-bitmap-size nil) ;not anymore necessary by boundp
+
+(defun set-fringe-standard-bitmap-size-1 (ignore value)
+  "Set frimge-standard-bitmap-size-1 to VALUE and put into effect.
+See custom `fringe-standard-bitmap-size' for possible values and their effect."
+  (cond ((eq 0 value)
+	 (progn ;string numbers are expressed in \octal or \xhex
+	   (define-fringe-bitmap 'left-arrow
+	     "\4\17\4" nil 4 'center)
+	   (define-fringe-bitmap 'right-arrow
+	     "\2\17\2" nil 4 'center)
+	   (define-fringe-bitmap 'up-arrow
+	     "\2\7\2\2\2" nil 3 'top)
+	   (define-fringe-bitmap 'down-arrow
+	     "\2\2\2\7\2" nil 3 'bottom)
+	   (define-fringe-bitmap 'left-curly-arrow ; (,
+	     "\3\4\5\3\7" nil 3 'top)
+	   (define-fringe-bitmap 'right-curly-arrow ; ,)
+	     "\6\1\5\6\7" nil 3 'bottom)
+	   (define-fringe-bitmap 'left-triangle ; <
+	     "\1\3\7\3\1" nil 3 'center)
+	   (define-fringe-bitmap 'right-triangle ; >
+	     "\4\6\7\6\4" nil 3 'center)
+	   (define-fringe-bitmap 'top-left-angle
+	     "\7\4\4" nil 3 'top)
+	   (define-fringe-bitmap 'top-right-angle
+	     "\7\1\1" nil 3 'top)
+	   (define-fringe-bitmap 'bottom-left-angle
+	     "\4\4\7" nil 3 'bottom)
+	   (define-fringe-bitmap 'bottom-right-angle
+	     "\1\1\7" nil 3 'bottom)))
+	((eq 1 value)
+	 (progn
+	   (define-fringe-bitmap 'left-arrow
+	     "\4\10\37\10\4" nil 5 'center)
+	   (define-fringe-bitmap 'right-arrow
+	     "\4\2\37\2\4" nil 5 'center)
+	   (define-fringe-bitmap 'up-arrow
+	     "\4\16\25\4\4\4" nil 5 'top)
+	   (define-fringe-bitmap 'down-arrow
+	     "\4\4\4\25\16\4" nil 5 'bottom)
+	   (define-fringe-bitmap 'left-curly-arrow
+	     "\6\10\11\5\3\7" nil 4 'top)
+	   (define-fringe-bitmap 'right-curly-arrow
+	     "\6\1\11\12\14\16" nil 4 'bottom)
+	   (define-fringe-bitmap 'left-triangle ; <
+	     "\6\16\36\76\36\16\6" nil 5 'center)
+	   (define-fringe-bitmap 'right-triangle ; >
+	     "\30\34\36\37\36\34\30" nil 5 'center)
+	   (define-fringe-bitmap 'top-left-angle
+	     "\17\10\10\10" nil 4 'top)
+	   (define-fringe-bitmap 'top-right-angle
+	     "\17\1\1\1" nil 4 'top)
+	   (define-fringe-bitmap 'bottom-left-angle
+	     "\10\10\10\17" nil 4 'bottom)
+	   (define-fringe-bitmap 'bottom-right-angle
+	     "\1\1\1\17" nil 4 'bottom)))
+	((eq 2 value)
+	 (progn
+	   (define-fringe-bitmap 'left-arrow
+	     "\4\10\20\77\20\10\4" nil 6 'center)
+	   (define-fringe-bitmap 'right-arrow
+	     "\10\4\2\77\2\4\10" nil 6 'center)
+	   (define-fringe-bitmap 'up-arrow
+	     "\10\34\52\111\10\10" nil 7 'top)
+	   (define-fringe-bitmap 'down-arrow
+	     "\10\10\111\52\34\10" nil 7 'bottom)
+	   (define-fringe-bitmap 'left-curly-arrow
+	     "\10\20\21\15\7\37" nil 5 'top)
+	   (define-fringe-bitmap 'right-curly-arrow
+	     "\16\1\21\26\34\37" nil 5 'bottom)
+	   (define-fringe-bitmap 'left-triangle ; <
+	     "\3\17\37\77\77\37\17\3" nil 6 'center)
+	   (define-fringe-bitmap 'right-triangle ; >
+	     "\60\74\76\77\77\76\74\60" nil 6 'center)
+	   (define-fringe-bitmap 'top-left-angle
+	     "\37\20\20\20\20" nil 5 'top)
+	   (define-fringe-bitmap 'top-right-angle
+	     "\37\1\1\1\1" nil 5 'top)
+	   (define-fringe-bitmap 'bottom-left-angle
+	     "\20\20\20\20\37" nil 5 'bottom)
+	   (define-fringe-bitmap 'bottom-right-angle
+	     "\1\1\1\1\37" nil 5 'bottom)))
+	((and (eq nil value) (boundp 'fringe-standard-bitmap-size) (not (equal fringe-standard-bitmap-size value)))
+	 (progn
+	   (destroy-fringe-bitmap 'left-arrow)
+	   (destroy-fringe-bitmap 'right-arrow)
+	   (destroy-fringe-bitmap 'up-arrow)
+	   (destroy-fringe-bitmap 'down-arrow)
+	   (destroy-fringe-bitmap 'left-curly-arrow)
+	   (destroy-fringe-bitmap 'right-curly-arrow)
+	   (destroy-fringe-bitmap 'right-triangle)
+	   (destroy-fringe-bitmap 'left-triangle)
+	   (destroy-fringe-bitmap 'top-left-angle)
+	   (destroy-fringe-bitmap 'top-right-angle)
+	   (destroy-fringe-bitmap 'bottom-left-angle)
+	   (destroy-fringe-bitmap 'bottom-right-angle)
+	   ;(destroy-fringe-bitmap )
+	   )))
+  (setq fringe-standard-bitmap-size value)) ;how to use symbol?
+
+;;;###autoload
+(defcustom fringe-standard-bitmap-size nil
+  "*Specify the bitmap set (related to size) of fringe bitmaps
+nil is the default bitpapset (quit big)
+0 (tiny) for smallest bitmap as possible"
+  :type '(choice (const :tag "Default size" nil)
+		 (const :tag "tiny" 0)
+		 (const :tag "small" 1)
+		 (const :tag "medium" 2))
+  :group 'fringe
+  :require 'fringe
+  :set 'set-fringe-standard-bitmap-size-1
+  ;; the following old syntax has not anymore effect
+  ;; :set (lambda (symbol value)
+  ;;       (set-fringe-standard-bitmap-size-1 symbol value))
+)
+
 (provide 'fringe)
 
 ;;; arch-tag: 6611ef60-0869-47ed-8b93-587ee7d3ff5d
Index: src/dispextern.h
===================================================================
RCS file: /cvsroot/emacs/emacs/src/dispextern.h,v
retrieving revision 1.215
diff -u -r1.215 dispextern.h
--- src/dispextern.h	15 Mar 2006 07:55:36 -0000	1.215
+++ src/dispextern.h	22 Apr 2006 12:36:56 -0000
@@ -1248,6 +1248,20 @@
       ? MATRIX_HEADER_LINE_ROW (MATRIX)->height	\
       : 0)
 
+/* Return the fringe mode relative to selected/unselected window,
+   parameters  W the window,  AFFID Active Fringe Face ID          */
+
+#define CURRENT_FRINGE_FACE_ID_2(W,AFFID)			\
+       (!fringe_in_non_selected_windows			\
+	|| ((W) == XWINDOW (selected_window))		\
+	? AFFID						\
+	: FRINGE_INACTIVE_FACE_ID)
+
+/* see above, FRINGE_FACE_ID is the default */
+
+#define CURRENT_FRINGE_FACE_ID(W)			\
+	CURRENT_FRINGE_FACE_ID_2(W,FRINGE_FACE_ID)
+
 /* Return the desired face id for the mode line of a window, depending
    on whether the window is selected or not, or if the window is the
    scrolling window for the currently active minibuffer window.
@@ -1595,6 +1609,7 @@
   MODE_LINE_INACTIVE_FACE_ID,
   TOOL_BAR_FACE_ID,
   FRINGE_FACE_ID,
+  FRINGE_INACTIVE_FACE_ID,
   HEADER_LINE_FACE_ID,
   SCROLL_BAR_FACE_ID,
   BORDER_FACE_ID,
@@ -2645,6 +2660,7 @@
 extern Lisp_Object Qtool_bar;
 extern Lisp_Object Vshow_trailing_whitespace;
 extern int mode_line_in_non_selected_windows;
+extern int fringe_in_non_selected_windows;
 extern int redisplaying_p;
 extern void add_to_log P_ ((char *, Lisp_Object, Lisp_Object));
 extern int help_echo_showing_p;
Index: src/fringe.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/fringe.c,v
retrieving revision 1.41
diff -u -r1.41 fringe.c
--- src/fringe.c	21 Mar 2006 13:29:26 -0000	1.41
+++ src/fringe.c	22 Apr 2006 12:36:57 -0000
@@ -451,13 +451,14 @@
 struct fringe_bitmap standard_bitmaps[] =
 {
   { NULL, 0, 0, 0, 0, 0 }, /* NO_FRINGE_BITMAP */
+  /*      bits, height,           width,period,   align   , dynamic*/
   { FRBITS (question_mark_bits),      8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (left_arrow_bits),         8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (right_arrow_bits),        8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (up_arrow_bits),           8, 0, ALIGN_BITMAP_TOP,    0 },
   { FRBITS (down_arrow_bits),         8, 0, ALIGN_BITMAP_BOTTOM, 0 },
-  { FRBITS (left_curly_arrow_bits),   8, 0, ALIGN_BITMAP_CENTER, 0 },
-  { FRBITS (right_curly_arrow_bits),  8, 0, ALIGN_BITMAP_CENTER, 0 },
+  { FRBITS (left_curly_arrow_bits),   8, 0, ALIGN_BITMAP_TOP,    0 },
+  { FRBITS (right_curly_arrow_bits),  8, 0, ALIGN_BITMAP_BOTTOM, 0 },
   { FRBITS (left_triangle_bits),      8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (right_triangle_bits),     8, 0, ALIGN_BITMAP_CENTER, 0 },
   { FRBITS (top_left_angle_bits),     8, 0, ALIGN_BITMAP_TOP,    0 },
@@ -568,26 +569,27 @@
 
   if (which != NO_FRINGE_BITMAP)
     {
+      face_id = CURRENT_FRINGE_FACE_ID(w);
     }
   else if (left_p)
     {
       which = row->left_fringe_bitmap;
-      face_id = row->left_fringe_face_id;
+      face_id = CURRENT_FRINGE_FACE_ID_2(w, row->left_fringe_face_id);
     }
   else
     {
       which = row->right_fringe_bitmap;
-      face_id = row->right_fringe_face_id;
+      face_id = CURRENT_FRINGE_FACE_ID_2(w, row->right_fringe_face_id);
     }
 
   if (face_id == DEFAULT_FACE_ID)
     {
       Lisp_Object face;
 
-      if ((face = fringe_faces[which], NILP (face))
+      if ((face = CURRENT_FRINGE_FACE_ID_2(w, fringe_faces[which]), NILP (face))
 	  || (face_id = lookup_derived_face (f, face, 'A', FRINGE_FACE_ID, 0),
 	      face_id < 0))
-	face_id = FRINGE_FACE_ID;
+	face_id = CURRENT_FRINGE_FACE_ID_2(w, FRINGE_FACE_ID);
     }
 
   fb = fringe_bitmaps[which];
@@ -1080,7 +1082,7 @@
       else if (row->left_user_fringe_bitmap != NO_FRINGE_BITMAP)
 	{
 	  left = row->left_user_fringe_bitmap;
-	  left_face_id = row->left_user_fringe_face_id;
+	  left_face_id = CURRENT_FRINGE_FACE_ID_2(w,row->left_user_fringe_face_id);
 	}
       else if (row->truncated_on_left_p)
 	left = LEFT_FRINGE(0, Qtruncation, 0);
@@ -1107,7 +1109,7 @@
       else if (row->right_user_fringe_bitmap != NO_FRINGE_BITMAP)
 	{
 	  right = row->right_user_fringe_bitmap;
-	  right_face_id = row->right_user_fringe_face_id;
+	  right_face_id = CURRENT_FRINGE_FACE_ID_2(w,row->right_user_fringe_face_id);
 	}
       else if (row->truncated_on_right_p)
 	right = RIGHT_FRINGE (0, Qtruncation, 0);
@@ -1143,8 +1145,8 @@
 	      cur->redraw_fringe_bitmaps_p = 1;
 	      cur->left_fringe_bitmap = left;
 	      cur->right_fringe_bitmap = right;
-	      cur->left_fringe_face_id = left_face_id;
-	      cur->right_fringe_face_id = right_face_id;
+	      cur->left_fringe_face_id = CURRENT_FRINGE_FACE_ID_2(w,left_face_id);
+	      cur->right_fringe_face_id = CURRENT_FRINGE_FACE_ID_2(w,right_face_id);
 	    }
 	}
 
@@ -1159,8 +1161,8 @@
 
       row->left_fringe_bitmap = left;
       row->right_fringe_bitmap = right;
-      row->left_fringe_face_id = left_face_id;
-      row->right_fringe_face_id = right_face_id;
+      row->left_fringe_face_id = CURRENT_FRINGE_FACE_ID_2(w,left_face_id);
+      row->right_fringe_face_id = CURRENT_FRINGE_FACE_ID_2(w,right_face_id);
 
       if (rn > 0 && row->redraw_fringe_bitmaps_p)
 	row[-1].redraw_fringe_bitmaps_p = cur[-1].redraw_fringe_bitmaps_p = 1;
@@ -1336,7 +1338,7 @@
   if (once_p || fb->dynamic)
     {
 #if defined (HAVE_X_WINDOWS)
-      static unsigned char swap_nibble[16]
+      static unsigned char swap_nibble[16] /* 4 bitwise reverse */
 	= { 0x0, 0x8, 0x4, 0xc,    /* 0000 1000 0100 1100 */
 	    0x2, 0xa, 0x6, 0xe,    /* 0010 1010 0110 1110 */
 	    0x1, 0x9, 0x5, 0xd,    /* 0001 1001 0101 1101 */
Index: src/syntax.c
===================================================================
why this error?

RCS file: /cvsroot/emacs/emacs/src/syntax.c,v
retrieving revision 1.187
diff -u -r1.187 syntax.c
--- src/syntax.c	6 Feb 2006 15:23:21 -0000	1.187
+++ src/syntax.c	22 Apr 2006 12:37:01 -0000
@@ -685,7 +685,7 @@
   else
     {
       struct lisp_parse_state state;
-    lossage:
+lossage:
       /* We had two kinds of string delimiters mixed up
 	 together.  Decode this going forwards.
 	 Scan fwd from a known safe place (beginning-of-defun)
Index: src/window.c
===================================================================
more efficient (not select an already selected window)

RCS file: /cvsroot/emacs/emacs/src/window.c,v
retrieving revision 1.542
diff -u -r1.542 window.c
--- src/window.c	17 Apr 2006 21:50:59 -0000	1.542
+++ src/window.c	22 Apr 2006 12:37:17 -0000
@@ -131,6 +131,10 @@
    minibuffer is active.  */
 int mode_line_in_non_selected_windows;
 
+/* Non-zero means to use fringe-inactive face in all windows but the
+   selected-window.  */
+int fringe_in_non_selected_windows;
+
 /* If a window gets smaller than either of these, it is removed. */
 
 EMACS_INT window_min_height;
@@ -1868,8 +1872,10 @@
     window = Fnext_window (window, Qnil, all_frames);
   for (; i < 0; ++i)
     window = Fprevious_window (window, Qnil, all_frames);
-
-  Fselect_window (window, Qnil);
+  if (window != selected_window) {
+    //selected_window->circa row->redraw_fringe_bitmaps_p = 1; cut this line
+    Fselect_window (window, Qnil);
+  }
   return Qnil;
 }
 
@@ -7083,6 +7089,10 @@
 is displayed in the `mode-line' face.  */);
   mode_line_in_non_selected_windows = 1;
 
+  DEFVAR_BOOL ("fringe-in-non-selected-windows", &fringe_in_non_selected_windows,
+	       doc: /* Non-nil means to use `fringe-inactive' face in non-selected windows.  */);
+  fringe_in_non_selected_windows = 1;
+
   DEFVAR_LISP ("other-window-scroll-buffer", &Vother_window_scroll_buffer,
 	       doc: /* If non-nil, this is a buffer and \\[scroll-other-window] should scroll its window.  */);
   Vother_window_scroll_buffer = Qnil;
Index: src/xfaces.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xfaces.c,v
retrieving revision 1.345
diff -u -r1.345 xfaces.c
--- src/xfaces.c	12 Apr 2006 08:11:04 -0000	1.345
+++ src/xfaces.c	22 Apr 2006 12:37:28 -0000
@@ -327,7 +327,7 @@
 
 /* Names of basic faces.  */
 
-Lisp_Object Qdefault, Qtool_bar, Qregion, Qfringe;
+Lisp_Object Qdefault, Qtool_bar, Qregion, Qfringe, Qfringe_inactive;
 Lisp_Object Qheader_line, Qscroll_bar, Qcursor, Qborder, Qmouse, Qmenu;
 Lisp_Object Qmode_line_inactive, Qvertical_border;
 extern Lisp_Object Qmode_line;
@@ -6943,6 +6943,7 @@
       realize_named_face (f, Qmode_line_inactive, MODE_LINE_INACTIVE_FACE_ID);
       realize_named_face (f, Qtool_bar, TOOL_BAR_FACE_ID);
       realize_named_face (f, Qfringe, FRINGE_FACE_ID);
+      realize_named_face (f, Qfringe_inactive, FRINGE_INACTIVE_FACE_ID);
       realize_named_face (f, Qheader_line, HEADER_LINE_FACE_ID);
       realize_named_face (f, Qscroll_bar, SCROLL_BAR_FACE_ID);
       realize_named_face (f, Qborder, BORDER_FACE_ID);
@@ -8067,6 +8068,8 @@
   staticpro (&Qregion);
   Qfringe = intern ("fringe");
   staticpro (&Qfringe);
+  Qfringe_inactive = intern ("fringe-inactive");
+  staticpro (&Qfringe_inactive);
   Qheader_line = intern ("header-line");
   staticpro (&Qheader_line);
   Qscroll_bar = intern ("scroll-bar");
Index: lisp/net/netrc.el
===================================================================
many accounts on one remote machine require different entry in .authinfo
distinguished by the value of login attribute also.

RCS file: /cvsroot/emacs/emacs/lisp/net/netrc.el,v
retrieving revision 1.6
diff -u -r1.6 netrc.el
--- lisp/net/netrc.el	6 Feb 2006 11:33:04 -0000	1.6
+++ lisp/net/netrc.el	22 Apr 2006 12:36:49 -0000
@@ -94,9 +94,10 @@
 	  (forward-line 1))
 	(nreverse result)))))
 
-(defun netrc-machine (list machine &optional port defaultport)
+(defun netrc-machine (list machine &optional port defaultport user)
   "Return the netrc values from LIST for MACHINE or for the default entry.
-If PORT specified, only return entries with matching port tokens.
+If PORT specified, only return entries with matching port tokens,
+the same with the user.
 Entries without port tokens default to DEFAULTPORT."
   (let ((rest list)
 	result)
@@ -115,7 +116,9 @@
       (while (and result
 		  (not (equal (or port defaultport "nntp")
 			      (or (netrc-get (car result) "port")
-				  defaultport "nntp"))))
+				  defaultport "nntp")))
+		  (or (not user)
+		      (equal user (netrc-get (car result) "login"))))
 	(pop result))
       (car result))))
 
Index: lisp/ibuffer.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/ibuffer.el,v
retrieving revision 1.78
diff -u -r1.78 ibuffer.el
--- lisp/ibuffer.el	2 Apr 2006 19:17:34 -0000	1.78
+++ lisp/ibuffer.el	22 Apr 2006 12:36:38 -0000
@@ -221,7 +221,7 @@
                         "22.1")
 
 (defcustom ibuffer-eliding-string "..."
-  "The string to use for eliding long columns."
+  "The string to use for eliding large text inside sized columns."
   :type 'string
   :group 'ibuffer)
 
Index: lisp/wid-edit.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/wid-edit.el,v
retrieving revision 1.166
diff -u -r1.166 wid-edit.el
--- lisp/wid-edit.el	16 Feb 2006 15:58:32 -0000	1.166
+++ lisp/wid-edit.el	22 Apr 2006 12:36:44 -0000
@@ -2917,8 +2917,8 @@
 		(widget-create-child-and-convert
 		 widget 'visibility
 		 :help-echo "Show or hide rest of the documentation."
-		 :on "Hide Rest"
-		 :off "More"
+		 :on "--..."	; my mind is more visual
+		 :off "...++"
 		 :always-active t
 		 :action 'widget-parent-action
 		 shown))
Index: lisp/gnus/pop3.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/pop3.el,v
retrieving revision 1.34
diff -u -r1.34 pop3.el
--- lisp/gnus/pop3.el	5 Feb 2006 13:56:43 -0000	1.34
+++ lisp/gnus/pop3.el	22 Apr 2006 12:36:45 -0000
@@ -202,7 +202,8 @@
 	process)
     (save-excursion
       (set-buffer (get-buffer-create (concat " trace of POP session to "
-					     mailhost)))
+					     mailhost ;":" (int-to-string port)
+					     )))
       (erase-buffer)
       (setq pop3-read-point (point-min))
       (setq process (open-network-stream "POP" (current-buffer) mailhost port))
Index: lisp/net/browse-url.el
===================================================================
I wrote this code before someone introduced browse-url-firefox,
my code is lighter for netscape family browsers (mozilla, firebirth, firefox,..),
and do not propagate copy of the same code (mozilla and firefox) because
is focused on the real difference from the control point of view:
the program file name.

RCS file: /cvsroot/emacs/emacs/lisp/net/browse-url.el,v
retrieving revision 1.53
diff -u -r1.53 browse-url.el
--- lisp/net/browse-url.el	6 Feb 2006 11:33:04 -0000	1.53
+++ lisp/net/browse-url.el	22 Apr 2006 12:36:49 -0000
@@ -38,7 +38,8 @@
 
 ;; Function                           Browser     Earliest version
 ;; browse-url-mozilla                 Mozilla     Don't know
-;; browse-url-firefox                 Firefox     Don't know (tried with 1.0.1)
+;; browse-url-mozilla-firefox         Mozilla Firefox Don't know
+;; browse-url-firefox                 Firefox     1.0.1
 ;; browse-url-galeon                  Galeon      Don't know
 ;; browse-url-epiphany                Epiphany    Don't know
 ;; browse-url-netscape                Netscape    1.1b1
@@ -86,16 +87,18 @@
 ;; <URL:http://grail.cnri.reston.va.us/> and for more information on
 ;; Python see <url:http://www.python.org/>.  Grail support in
 ;; browse-url.el written by Barry Warsaw <bwarsaw@python.org>.
-
 ;; Lynx is now distributed by the FSF.  See also
 ;; <URL:http://lynx.browser.org/>.
 
 ;; Free graphical browsers that could be used by `browse-url-generic'
-;; include Chimera <URL:ftp://ftp.cs.unlv.edu/pub/chimera> and
-;; <URL:http://www.unlv.edu/chimera/>, Arena
-;; <URL:ftp://ftp.yggdrasil.com/pub/dist/web/arena> and Amaya
-;; <URL:ftp://ftp.w3.org/pub/amaya>.  mMosaic
-;; <URL:ftp://ftp.enst.fr/pub/mbone/mMosaic/>,
+;; include
+;; Mozilla <URL:http://www.mozilla.org/>
+;; Mozilla Firefox <URL:http://www.mozilla.org/products/firefox/>
+;; Chimera <URL:ftp://ftp.cs.unlv.edu/pub/chimera> and
+;; <URL:http://www.unlv.edu/chimera/>,
+;; Arena <URL:ftp://ftp.yggdrasil.com/pub/dist/web/arena> and
+;; Amaya <URL:ftp://ftp.w3.org/pub/amaya>.
+;; mMosaic <URL:ftp://ftp.enst.fr/pub/mbone/mMosaic/>,
 ;; <URL:http://www.enst.fr/~dauphin/mMosaic/> (with development
 ;; support for Java applets and multicast) can be used like Mosaic by
 ;; setting `browse-url-mosaic-program' appropriately.
@@ -111,6 +114,8 @@
 ;; <URL:ftp://ftp.lysator.liu.se/pub/sgml>; hm--html-menus can be used
 ;; with this.
 
+;; 
+
 ;; This package generalises function html-previewer-process in Marc
 ;; Andreessen's html-mode (LCD modes/html-mode.el.Z).  See also the
 ;; ffap.el package.  The huge hyperbole package also contains similar
@@ -249,6 +254,7 @@
 	  (function-item :tag "W3 in another Emacs via `gnudoit'"
 			 :value  browse-url-w3-gnudoit)
 	  (function-item :tag "Mozilla" :value  browse-url-mozilla)
+	  (function-item :tag "Mozilla Firefox" :value  browse-url-mozilla-firefox)
 	  (function-item :tag "Firefox" :value browse-url-firefox)
 	  (function-item :tag "Galeon" :value  browse-url-galeon)
 	  (function-item :tag "Epiphany" :value  browse-url-epiphany)
@@ -313,6 +319,11 @@
   :type 'string
   :group 'browse-url)
 
+(defcustom browse-url-mozilla-firefox-program "mozilla-firefox"
+  "*The name by which to invoke Mozilla firefox."
+  :type 'string
+  :group 'browse-url)
+
 (defcustom browse-url-mozilla-arguments nil
   "*A list of strings to pass to Mozilla as arguments."
   :type '(repeat (string :tag "Argument"))
@@ -850,12 +861,13 @@
 used instead of `browse-url-new-window-flag'.
 
 The order attempted is gnome-moz-remote, Mozilla, Firefox,
-Galeon, Konqueror, Netscape, Mosaic, IXI Mosaic, Lynx in an
-xterm, MMM, and then W3."
+Galeon, Konqueror, Netscape, Mosaic, IXI Mosaic,
+Lynx in an xterm, MMM, and then W3."
   (apply
     (cond
      ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
      ((executable-find browse-url-mozilla-program) 'browse-url-mozilla)
+     ((executable-find browse-url-mozilla-firefox-program) 'browse-url-mozilla-firefox)
      ((executable-find browse-url-firefox-program) 'browse-url-firefox)
      ((executable-find browse-url-galeon-program) 'browse-url-galeon)
      ((executable-find browse-url-kde-program) 'browse-url-kde)
@@ -944,8 +956,16 @@
                    (list "-remote" command)))))
 
 ;;;###autoload
+(defun browse-url-mozilla-firefox (url &optional new-window)
+  "Ask the mozilla-firefox browser to load URL by `browse-url-mozilla'.
+This is a shorter way to define mozilla -remote control derived browsers"
+  ;;temporary assign mozilla-firefox to browse-url-mozilla-program
+  (let ((browse-url-mozilla-program browse-url-mozilla-firefox-program))
+    (browse-url-mozilla url new-window)))
+
+;;;###autoload
 (defun browse-url-mozilla (url &optional new-window)
-  "Ask the Mozilla WWW browser to load URL.
+  "Ask the Mozilla (`browse-url-mozilla-program' WWW browser to load URL.
 Default to the URL around or before point.  The strings in variable
 `browse-url-mozilla-arguments' are also passed to Mozilla.
 
@@ -959,7 +979,14 @@
 new tab in an existing window instead.
 
 When called non-interactively, optional second argument NEW-WINDOW is
-used instead of `browse-url-new-window-flag'."
+used instead of `browse-url-new-window-flag'.
+
+On MS-Windows systems the optional `new-window' parameter is ignored.
+Firefox ?and Mozilla? for Windows does not support the \"-remote\"
+command line parameter.  Therefore, the
+`browse-url-new-window-flag' and `browse-url-mozilla-new-window-is-tab'
+are ignored as well."
+
   (interactive (browse-url-interactive-arg "URL: "))
   ;; URL encode any `confusing' characters in the URL.  This needs to
   ;; include at least commas; presumably also close parens and dollars.
@@ -969,7 +996,7 @@
   (let* ((process-environment (browse-url-process-environment))
          (process
 	  (apply 'start-process
-		 (concat "mozilla " url) nil
+		 (concat browse-url-mozilla-program " " url) nil
 		 browse-url-mozilla-program
 		 (append
 		  browse-url-mozilla-arguments
@@ -992,12 +1019,15 @@
       (let* ((process-environment (browse-url-process-environment)))
 	;; Mozilla is not running - start it
 	(message "Starting %s..." browse-url-mozilla-program)
-	(apply 'start-process (concat "mozilla " url) nil
+	(apply 'start-process (concat browse-url-mozilla-program " " url) nil
 	       browse-url-mozilla-program
 	       (append browse-url-mozilla-startup-arguments (list url))))))
 
 ;;;###autoload
 (defun browse-url-firefox (url &optional new-window)
+;; see browse-url-mozilla-firefox above before copy again
+;;xxx below is wasted memory space introduced on summer 2005 because
+;; is a minimal modified copy/paste of browser-url-mozilla
   "Ask the Firefox WWW browser to load URL.
 Default to the URL around or before point.  The strings in
 variable `browse-url-firefox-arguments' are also passed to
Index: lisp/Makefile.in
===================================================================
just for a pleasant debugging

RCS file: /cvsroot/emacs/emacs/lisp/Makefile.in,v
retrieving revision 1.79
diff -u -r1.79 Makefile.in
--- lisp/Makefile.in	8 Feb 2006 17:31:23 -0000	1.79
+++ lisp/Makefile.in	22 Apr 2006 12:36:33 -0000
@@ -67,9 +67,9 @@
 
 # Common command to find subdirectories
 
-setwins=subdirs=`(cd $$wd; find . -type d -print)`; \
+setwins=subdirs=`(cd $$wd; find . -type d \! -name CVS -a \! -path */.\* -print)`; \
 	for file in $$subdirs; do \
-	   case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* ) ;; \
+	   case $$file in */Old | */RCS | */CVS/* | */.* | */.*/* | */=* ) ;; \
 		*) wins="$$wins $$wd/$$file" ;; \
 	   esac; \
         done
