
1: /* Definitions for interface to indent.c 2: Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004, 3: 2005, 2006, 2007 Free Software Foundation, Inc. 4: 5: This file is part of GNU Emacs. 6: 7: GNU Emacs is free software; you can redistribute it and/or modify 8: it under the terms of the GNU General Public License as published by 9: the Free Software Foundation; either version 2, or (at your option) 10: any later version. 11: 12: GNU Emacs is distributed in the hope that it will be useful, 13: but WITHOUT ANY WARRANTY; without even the implied warranty of 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15: GNU General Public License for more details. 16: 17: You should have received a copy of the GNU General Public License 18: along with GNU Emacs; see the file COPYING. If not, write to 19: the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20: Boston, MA 02110-1301, USA. */ 21: 22: /* We introduce new member `tab_offset'. We need it because of the 23: existence of wide-column characters. There is a case that the 24: line-break occurs at a wide-column character and the number of 25: colums of the line gets less than width. 26: 27: Example (where W_ stands for a wide-column character): 28: ---------- 29: abcdefgh\\ 30: W_ 31: ---------- 32: 33: To handle this case, we should not calculate the tab offset by 34: tab_offset += width; 35: 36: Instead, we must remember tab_offset of the line. 37: 38: */ 39: 40: struct position 41: { 42: int bufpos; 43: int bytepos; 44: int hpos; 45: int vpos; 46: int prevhpos; 47: int contin; 48: /* Number of characters we have already handled 49: from the before and after strings at this position. */ 50: int ovstring_chars_done; 51: int tab_offset; 52: }; 53: 54: struct position *compute_motion P_ ((int, int, int, int, int, int, int, 55: int, int, int, struct window *)); 56: struct position *vmotion P_ ((int, int, struct window *)); 57: int skip_invisible P_ ((int, int *, int, Lisp_Object)); 58: 59: /* Value of point when current_column was called */ 60: extern int last_known_column_point; 61: 62: /* Functions for dealing with the column cache. */ 63: 64: /* Return true iff the display table DISPTAB specifies the same widths 65: for characters as WIDTHTAB. We use this to decide when to 66: invalidate the buffer's column_cache. */ 67: int disptab_matches_widthtab P_ ((struct Lisp_Char_Table *disptab, 68: struct Lisp_Vector *widthtab)); 69: 70: /* Recompute BUF's width table, using the display table DISPTAB. */ 71: void recompute_width_table P_ ((struct buffer *buf, 72: struct Lisp_Char_Table *disptab)); 73: 74: 75: /* arch-tag: f9feb373-5bff-4f4f-9198-94805d00cfd7 76: (do not change this comment) */