1
0
forked from aniani/vim

patch 8.1.2057: the screen.c file is much too big

Problem:    The screen.c file is much too big.
Solution:   Split it in three parts. (Yegappan Lakshmanan, closes #4943)
This commit is contained in:
Bram Moolenaar 2019-09-19 23:06:20 +02:00
parent cd67059c0c
commit 7528d1f6b5
17 changed files with 6446 additions and 6515 deletions

View File

@ -32,6 +32,8 @@ SRC_ALL = \
src/dict.c \
src/diff.c \
src/digraph.c \
src/drawline.c \
src/drawscreen.c \
src/edit.c \
src/eval.c \
src/evalbuffer.c \
@ -192,6 +194,8 @@ SRC_ALL = \
src/proto/dict.pro \
src/proto/diff.pro \
src/proto/digraph.pro \
src/proto/drawline.pro \
src/proto/drawscreen.pro \
src/proto/edit.pro \
src/proto/eval.pro \
src/proto/evalbuffer.pro \

View File

@ -719,6 +719,8 @@ OBJ = \
$(OUTDIR)/dict.o \
$(OUTDIR)/diff.o \
$(OUTDIR)/digraph.o \
$(OUTDIR)/drawline.o \
$(OUTDIR)/drawscreen.o \
$(OUTDIR)/edit.o \
$(OUTDIR)/eval.o \
$(OUTDIR)/evalbuffer.o \

View File

@ -39,6 +39,8 @@ SRC = arabic.c \
dict.c \
diff.c \
digraph.c \
drawline.c \
drawscreen.c \
edit.c \
eval.c \
evalbuffer.c \

View File

@ -726,6 +726,8 @@ OBJ = \
$(OUTDIR)\dict.obj \
$(OUTDIR)\diff.obj \
$(OUTDIR)\digraph.obj \
$(OUTDIR)\drawline.obj \
$(OUTDIR)\drawscreen.obj \
$(OUTDIR)\edit.obj \
$(OUTDIR)\eval.obj \
$(OUTDIR)\evalbuffer.obj \
@ -1484,6 +1486,10 @@ $(OUTDIR)/xpatience.obj: $(OUTDIR) xdiff/xpatience.c $(XDIFF_DEPS)
$(OUTDIR)/digraph.obj: $(OUTDIR) digraph.c $(INCL)
$(OUTDIR)/drawline.obj: $(OUTDIR) drawline.c $(INCL)
$(OUTDIR)/drawscreen.obj: $(OUTDIR) drawscreen.c $(INCL)
$(OUTDIR)/edit.obj: $(OUTDIR) edit.c $(INCL)
$(OUTDIR)/eval.obj: $(OUTDIR) eval.c $(INCL)
@ -1783,6 +1789,8 @@ proto.h: \
proto/dict.pro \
proto/diff.pro \
proto/digraph.pro \
proto/drawline.pro \
proto/drawscreen.pro \
proto/edit.pro \
proto/eval.pro \
proto/evalbuffer.pro \

View File

@ -309,8 +309,8 @@ ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \
SRC = arabic.c arglist.c autocmd.c beval.c blob.c blowfish.c buffer.c \
change.c charset.c cmdexpand.c cmdhist.c crypt.c crypt_zip.c \
debugger.c dict.c diff.c digraph.c edit.c eval.c evalbuffer.c \
evalfunc.c \
debugger.c dict.c diff.c digraph.c drawline.c drawscreen.c edit.c \
eval.c evalbuffer.c evalfunc.c \
evalvars.c evalwindow.c ex_cmds.c ex_cmds2.c ex_docmd.c ex_eval.c \
ex_getln.c \
if_cscope.c if_xcmdsrv.c fileio.c filepath.c, findfile.c fold.c \
@ -329,8 +329,8 @@ SRC = arabic.c arglist.c autocmd.c beval.c blob.c blowfish.c buffer.c \
OBJ = arabic.obj arglist.obj autocmd.obj beval.obj blob.obj blowfish.obj \
buffer.obj change.obj charset.obj cmdexpand.obj cmdhist.obj \
crypt.obj crypt_zip.obj debugger.obj dict.obj diff.obj digraph.obj \
edit.obj eval.obj evalbuffer.obj evalfunc.obj evalvars.obj \
evalwindow.obj ex_cmds.obj ex_cmds2.obj \
drawline.obj drawscreen.obj edit.obj eval.obj evalbuffer.obj \
evalfunc.obj evalvars.obj evalwindow.obj ex_cmds.obj ex_cmds2.obj \
ex_docmd.obj ex_eval.obj ex_getln.obj if_cscope.obj if_xcmdsrv.obj \
fileio.obj filepath.obj \
findfile.obj fold.obj getchar.obj hardcopy.obj hashtab.obj \
@ -556,16 +556,22 @@ dict.obj : dict.c vim.h [.auto]config.h feature.h os_unix.h \
globals.h
diff.obj : diff.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
digraph.obj : digraph.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
globals.h
drawline.obj : drawline.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
globals.h
drawscreen.obj : drawscreen.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
globals.h
edit.obj : edit.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
eval.obj : eval.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
@ -620,8 +626,7 @@ findfile.obj : findfile.c vim.h [.auto]config.h feature.h os_unix.h \
globals.h
fold.obj : fold.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
getchar.obj : getchar.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@ -669,8 +674,7 @@ map.obj : map.c vim.h [.auto]config.h feature.h os_unix.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
mark.obj : mark.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
memfile.obj : memfile.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@ -681,8 +685,7 @@ memline.obj : memline.c vim.h [.auto]config.h feature.h os_unix.h \
globals.h
menu.obj : menu.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
message.obj : message.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@ -693,24 +696,20 @@ misc1.obj : misc1.c vim.h [.auto]config.h feature.h os_unix.h \
version.h
misc2.obj : misc2.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
move.obj : move.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
mbyte.obj : mbyte.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
normal.obj : normal.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
globals.h
ops.obj : ops.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
option.obj : option.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@ -789,42 +788,33 @@ syntax.obj : syntax.c vim.h [.auto]config.h feature.h os_unix.h \
globals.h
tag.obj : tag.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
term.obj : term.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
termlib.obj : termlib.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
testing.obj : testing.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
textprop.obj : textprop.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
ui.obj : ui.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
undo.obj : undo.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
usercmd.obj : usercmd.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
proto.h globals.h
userfunc.obj : userfunc.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
proto.h globals.h
version.obj : version.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@ -839,8 +829,7 @@ window.obj : window.c vim.h [.auto]config.h feature.h os_unix.h \
globals.h
gui.obj : gui.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
gui_gtk.obj : gui_gtk.c gui_gtk_f.h vim.h [.auto]config.h feature.h \
os_unix.h ascii.h keymap.h term.h macros.h structs.h \
regexp.h gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h \
@ -893,8 +882,7 @@ gui_at_fs.obj : gui_at_fs.c vim.h [.auto]config.h feature.h os_unix.h \
globals.h gui_at_sb.h
pty.obj : pty.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
[.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h
hangulin.obj : hangulin.c vim.h [.auto]config.h feature.h os_unix.h \
ascii.h keymap.h term.h macros.h structs.h regexp.h \
gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \

View File

@ -1593,6 +1593,8 @@ BASIC_SRC = \
dict.c \
diff.c \
digraph.c \
drawline.c \
drawscreen.c \
edit.c \
eval.c \
evalbuffer.c \
@ -1727,6 +1729,8 @@ OBJ_COMMON = \
objects/dict.o \
objects/diff.o \
objects/digraph.o \
objects/drawline.o \
objects/drawscreen.o \
objects/edit.o \
objects/eval.o \
objects/evalbuffer.o \
@ -1874,6 +1878,8 @@ PRO_AUTO = \
dict.pro \
diff.pro \
digraph.pro \
drawline.pro \
drawscreen.pro \
edit.pro \
eval.pro \
evalbuffer.pro \
@ -3083,6 +3089,12 @@ objects/diff.o: diff.c $(XDIFF_INCL)
objects/digraph.o: digraph.c
$(CCC) -o $@ digraph.c
objects/drawline.o: drawline.c
$(CCC) -o $@ drawline.c
objects/drawscreen.o: drawscreen.c
$(CCC) -o $@ drawscreen.c
objects/edit.o: edit.c
$(CCC) -o $@ edit.c
@ -3613,6 +3625,14 @@ objects/digraph.o: digraph.c vim.h protodef.h auto/config.h feature.h os_unix.h
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
proto.h globals.h
objects/drawline.o: drawline.c vim.h protodef.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
proto.h globals.h
objects/drawscreen.o: drawscreen.c vim.h protodef.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
proto.h globals.h
objects/edit.o: edit.c vim.h protodef.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \

View File

@ -32,6 +32,8 @@ cmdexpand.c | command-line completion
cmdhist.c | command-line history
debugger.c | vim script debugger
diff.c | diff mode (vimdiff)
drawline.c | drawing a window line
drawscreen.c | drawing the windows
eval.c | expression evaluation
evalbuffer.c | buffer related built-in functions
evalfunc.c | built-in functions

3131
src/drawline.c Normal file

File diff suppressed because it is too large Load Diff

3112
src/drawscreen.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -61,6 +61,31 @@ EXTERN int Screen_mco INIT(= 0); // value of p_mco used when
// These are single-width.
EXTERN schar_T *ScreenLines2 INIT(= NULL);
/*
* Buffer for one screen line (characters and attributes).
*/
EXTERN schar_T *current_ScreenLine INIT(= NULL);
/*
* Last known cursor position.
* Positioning the cursor is reduced by remembering the last position.
* Mostly used by windgoto() and screen_char().
*/
EXTERN int screen_cur_row INIT(= 0);
EXTERN int screen_cur_col INIT(= 0);
#ifdef FEAT_SEARCH_EXTRA
EXTERN match_T screen_search_hl; // used for 'hlsearch' highlight matching
#endif
#ifdef FEAT_FOLDING
EXTERN foldinfo_T win_foldinfo; // info for 'foldcolumn'
#endif
// Flag that is set when drawing for a callback, not from the main command
// loop.
EXTERN int redrawing_for_callback INIT(= 0);
/*
* Indexes for tab page line:
* N > 0 for label of tab page N

View File

@ -73,6 +73,8 @@ extern int _stricoll(char *a, char *b);
# include "dict.pro"
# include "diff.pro"
# include "digraph.pro"
# include "drawline.pro"
# include "drawscreen.pro"
# include "edit.pro"
# include "eval.pro"
# include "evalbuffer.pro"

3
src/proto/drawline.pro Normal file
View File

@ -0,0 +1,3 @@
/* drawline.c */
int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, int nochange, int number_only);
/* vim: set ft=c : */

25
src/proto/drawscreen.pro Normal file
View File

@ -0,0 +1,25 @@
/* drawscreen.c */
int update_screen(int type_arg);
void win_redr_status(win_T *wp, int ignore_pum);
void showruler(int always);
void win_redr_ruler(win_T *wp, int always, int ignore_pum);
void after_updating_screen(int may_resize_shell);
void update_curbuf(int type);
void update_debug_sign(buf_T *buf, linenr_T lnum);
void updateWindow(win_T *wp);
int redraw_asap(int type);
void redraw_after_callback(int call_update_screen);
void redraw_later(int type);
void redraw_win_later(win_T *wp, int type);
void redraw_later_clear(void);
void redraw_all_later(int type);
void redraw_curbuf_later(int type);
void redraw_buf_later(buf_T *buf, int type);
void redraw_buf_line_later(buf_T *buf, linenr_T lnum);
void redraw_buf_and_status_later(buf_T *buf, int type);
void status_redraw_all(void);
void status_redraw_curbuf(void);
void redraw_statuslines(void);
void win_redraw_last_status(frame_T *frp);
void redrawWinline(win_T *wp, linenr_T lnum);
/* vim: set ft=c : */

View File

@ -1,40 +1,30 @@
/* screen.c */
void redraw_later(int type);
void redraw_win_later(win_T *wp, int type);
void redraw_later_clear(void);
void redraw_all_later(int type);
void redraw_curbuf_later(int type);
void redraw_buf_later(buf_T *buf, int type);
void redraw_buf_line_later(buf_T *buf, linenr_T lnum);
void redraw_buf_and_status_later(buf_T *buf, int type);
int redraw_asap(int type);
void redraw_after_callback(int call_update_screen);
void redrawWinline(win_T *wp, linenr_T lnum);
void after_updating_screen(int may_resize_shell);
void update_curbuf(int type);
int update_screen(int type_arg);
int conceal_cursor_line(win_T *wp);
void conceal_check_cursor_line(void);
void update_debug_sign(buf_T *buf, linenr_T lnum);
int get_wcr_attr(win_T *wp);
void updateWindow(win_T *wp);
void win_draw_end(win_T *wp, int c1, int c2, int draw_margin, int row, int endrow, hlf_T hl);
int compute_foldcolumn(win_T *wp, int col);
void fill_foldcolumn(char_u *p, win_T *wp, int closed, linenr_T lnum);
int screen_get_current_line_off(void);
void reset_screen_attr(void);
void screen_line(int row, int coloff, int endcol, int clear_width, int flags);
void rl_mirror(char_u *str);
void status_redraw_all(void);
void status_redraw_curbuf(void);
void redraw_statuslines(void);
void win_redraw_last_status(frame_T *frp);
void draw_vsep_win(win_T *wp, int row);
void win_redr_status_matches(expand_T *xp, int num_matches, char_u **matches, int match, int showtail);
int stl_connected(win_T *wp);
int get_keymap_str(win_T *wp, char_u *fmt, char_u *buf, int len);
void win_redr_custom(win_T *wp, int draw_ruler);
void screen_putchar(int c, int row, int col, int attr);
void screen_getbytes(int row, int col, char_u *bytes, int *attrp);
void screen_puts(char_u *text, int row, int col, int attr);
void screen_puts_len(char_u *text, int textlen, int row, int col, int attr);
void start_search_hl(void);
void end_search_hl(void);
void screen_stop_highlight(void);
void reset_cterm_colors(void);
void screen_char(unsigned off, int row, int col);
void screen_draw_rectangle(int row, int col, int height, int width, int invert);
void space_to_screenline(int off, int attr);
void screen_fill(int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr);
void check_for_delay(int check_msg_scroll);
int screen_valid(int doclear);
@ -56,9 +46,10 @@ void unshowmode(int force);
void clearmode(void);
void draw_tabline(void);
void get_trans_bufname(buf_T *buf);
int fillchar_status(int *attr, win_T *wp);
int fillchar_vsep(int *attr);
int redrawing(void);
int messaging(void);
void showruler(int always);
void comp_col(void);
int number_width(win_T *wp);
int screen_screencol(void);

File diff suppressed because it is too large Load Diff

View File

@ -757,6 +757,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2057,
/**/
2056,
/**/

View File

@ -587,6 +587,13 @@ extern int (*dyn_libintl_wputenv)(const wchar_t *envstring);
#define NOT_VALID 40 // buffer needs complete redraw
#define CLEAR 50 // screen messed up, clear it
// flags for screen_line()
#define SLF_RIGHTLEFT 1
#define SLF_POPUP 2
#define MB_FILLER_CHAR '<' // character used when a double-width character
// doesn't fit.
/*
* Flags for w_valid.
* These are set when something in a window structure becomes invalid, except