(turn_off_face): Reset standout_mode when resetting
[bpt/emacs.git] / src / indent.h
index 04fae3d..676f64a 100644 (file)
@@ -15,20 +15,45 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
+/* We introduce new member `tab_offset'.  We need it because of the
+   existence of wide-column characters.  There is a case that the
+   line-break occurs at a wide-column character and the number of
+   colums of the line gets less than width.
+
+   Example (where W_ stands for a wide-column character):
+            ----------
+            abcdefgh\\
+            W_      
+            ----------
+
+   To handle this case, we should not calculate the tab offset by 
+       tab_offset += width;
+
+   Instead, we must remember tab_offset of the line. 
+
+ */
 
 struct position
   {
     int bufpos;
+    int bytepos;
     int hpos;
     int vpos;
     int prevhpos;
     int contin;
+    /* Number of characters we have already handled
+       from the before and after strings at this position.  */
+    int ovstring_chars_done;
+    int tab_offset;
   };
 
-struct position *compute_motion ();
-struct position *vmotion ();
+struct position *compute_motion P_ ((int, int, int, int, int, int, int,
+                                    int, int, int, struct window *));
+struct position *vmotion P_ ((int, int, struct window *));
+int skip_invisible P_ ((int, int *, int, Lisp_Object));
 
 /* Value of point when current_column was called */
 extern int last_known_column_point;
@@ -38,9 +63,11 @@ extern int last_known_column_point;
 /* Return true iff the display table DISPTAB specifies the same widths
    for characters as WIDTHTAB.  We use this to decide when to
    invalidate the buffer's column_cache.  */
-extern int disptab_matches_widthtab ( /* struct Lisp_Vector *disptab,
-                                         struct Lisp_Vector *widthtab */ );
+int disptab_matches_widthtab P_ ((struct Lisp_Char_Table *disptab,
+                                 struct Lisp_Vector *widthtab));
 
 /* Recompute BUF's width table, using the display table DISPTAB.  */
-extern void recompute_width_table ( /* struct buffer *buf,
-                                       struct Lisp_Vector *disptab */ );
+void recompute_width_table P_ ((struct buffer *buf,
+                               struct Lisp_Char_Table *disptab));
+
+