emacs-pretest-bug
[Top][All Lists]
Advanced

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

Re: C-n doesn't move point when selective-display enabled


From: Richard Stallman
Subject: Re: C-n doesn't move point when selective-display enabled
Date: Tue, 02 Mar 2004 10:51:52 -0500

Do you get good results with this fix?

*** indent.c.~1.158.~   Thu Sep 11 09:51:23 2003
--- indent.c    Tue Mar  2 10:21:14 2004
***************
*** 1197,1203 ****
      = (INTEGERP (current_buffer->selective_display)
         ? XINT (current_buffer->selective_display)
         : !NILP (current_buffer->selective_display) ? -1 : 0);
-   int prev_hpos = 0;
    int selective_rlen
      = (selective && dp && VECTORP (DISP_INVIS_VECTOR (dp))
         ? XVECTOR (DISP_INVIS_VECTOR (dp))->size : 0);
--- 1197,1202 ----
***************
*** 1225,1230 ****
--- 1224,1231 ----
    int wide_column_end_hpos = 0;
    int prev_pos;                       /* Previous buffer position.  */
    int prev_pos_byte;          /* Previous buffer position.  */
+   int prev_hpos = 0;
+   int prev_vpos = 0;
    int contin_hpos;            /* HPOS of last column of continued line.  */
    int prev_tab_offset;                /* Previous tab offset.  */
  
***************
*** 1273,1278 ****
--- 1274,1280 ----
                  pos = prev_pos;
                  pos_byte = prev_pos_byte;
                  hpos = prev_hpos;
+                 vpos = prev_vpos;
                  tab_offset = prev_tab_offset;
                }
              break;
***************
*** 1382,1387 ****
--- 1384,1390 ----
                  if (pos >= next_boundary)
                    next_boundary = pos + 1;
                  prev_hpos = width;
+                 prev_vpos = vpos;
                  prev_tab_offset = tab_offset;
                }
            }
***************
*** 1414,1419 ****
--- 1417,1423 ----
          pos = prev_pos;
          pos_byte = prev_pos_byte;
          hpos = prev_hpos;
+         vpos = prev_vpos;
          tab_offset = prev_tab_offset;
  
          /* NOTE on contin_hpos, hpos, and prev_hpos.
***************
*** 1434,1443 ****
              hpos = contin_hpos;
              vpos = vpos - 1;
            }
-         else if (c == '\n')
-           /* If previous character is NEWLINE,
-              set VPOS back to previous line */
-           vpos = vpos - 1;
          break;
        }
  
--- 1438,1443 ----
***************
*** 1455,1460 ****
--- 1455,1461 ----
              pos = prev_pos;
              pos_byte = prev_pos_byte;
              hpos = prev_hpos;
+             vpos = prev_vpos;
              tab_offset = prev_tab_offset;
            }
          break;
***************
*** 1463,1468 ****
--- 1464,1470 ----
        break;
  
        prev_hpos = hpos;
+       prev_vpos = vpos;
        prev_pos = pos;
        prev_pos_byte = pos_byte;
        wide_column_end_hpos = 0;




reply via email to

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