X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/c8d3a25c0981020e1b8aa3bf96a4a0059be82431..84254bbdf069f0386f188d0e2bc5be795a9272bb:/src/scroll.c diff --git a/src/scroll.c b/src/scroll.c index 86d775545b..3da236ca8a 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -1,7 +1,7 @@ /* Calculate what line insertion or deletion to do, and do it -Copyright (C) 1985-1986, 1990, 1993-1994, 2001-2012 - Free Software Foundation, Inc. +Copyright (C) 1985-1986, 1990, 1993-1994, 2001-2014 Free Software +Foundation, Inc. This file is part of GNU Emacs. @@ -21,7 +21,7 @@ along with GNU Emacs. If not, see . */ #include #include -#include + #include "lisp.h" #include "termchar.h" #include "dispextern.h" @@ -86,7 +86,7 @@ static void do_scrolling (struct frame *, new contents appears. */ static void -calculate_scrolling (FRAME_PTR frame, +calculate_scrolling (struct frame *frame, /* matrix is of size window_size + 1 on each side. */ struct matrix_elt *matrix, int window_size, int lines_below, @@ -195,13 +195,13 @@ calculate_scrolling (FRAME_PTR frame, { cost = p1->writecost + first_insert_cost[i]; if ((int) p1->insertcount > i) - abort (); + emacs_abort (); cost1 = p1->insertcost + next_insert_cost[i - p1->insertcount]; } p->insertcost = min (cost, cost1) + draw_cost[i] + extra_cost; p->insertcount = (cost < cost1) ? 1 : p1->insertcount + 1; if ((int) p->insertcount > i) - abort (); + emacs_abort (); /* Calculate the cost if we do a delete line after outputting this line. @@ -246,18 +246,17 @@ do_scrolling (struct frame *frame, struct glyph_matrix *current_matrix, struct matrix_elt *p; int i, j, k; - /* Set to 1 if we have set a terminal window with - set_terminal_window. It's unsigned to work around GCC bug 48228. */ - unsigned int terminal_window_p = 0; + /* True if we have set a terminal window with set_terminal_window. */ + bool terminal_window_p = 0; /* A queue for line insertions to be done. */ struct queue { int count, pos; }; struct queue *queue_start - = (struct queue *) alloca (current_matrix->nrows * sizeof (struct queue)); + = alloca (current_matrix->nrows * sizeof *queue_start); struct queue *queue = queue_start; - char *retained_p = (char *) alloca (window_size * sizeof (char)); - int *copy_from = (int *) alloca (window_size * sizeof (int)); + char *retained_p = alloca (window_size * sizeof *retained_p); + int *copy_from = alloca (window_size * sizeof *copy_from); /* Zero means line is empty. */ memset (retained_p, 0, window_size * sizeof (char)); @@ -423,7 +422,7 @@ do_scrolling (struct frame *frame, struct glyph_matrix *current_matrix, is the equivalent of draw_cost for the old line contents */ static void -calculate_direct_scrolling (FRAME_PTR frame, +calculate_direct_scrolling (struct frame *frame, /* matrix is of size window_size + 1 on each side. */ struct matrix_elt *matrix, int window_size, int lines_below, @@ -653,29 +652,26 @@ do_direct_scrolling (struct frame *frame, struct glyph_matrix *current_matrix, /* A queue of deletions and insertions to be performed. */ struct alt_queue { int count, pos, window; }; - struct alt_queue *queue_start = (struct alt_queue *) - alloca (window_size * sizeof *queue_start); + struct alt_queue *queue_start = alloca (window_size * sizeof *queue_start); struct alt_queue *queue = queue_start; - /* Set to 1 if a terminal window has been set with - set_terminal_window: */ - int terminal_window_p = 0; + /* True if a terminal window has been set with set_terminal_window. */ + bool terminal_window_p = 0; - /* A nonzero value of write_follows indicates that a write has been - selected, allowing either an insert or a delete to be selected - next. When write_follows is zero, a delete cannot be selected + /* If true, a write has been selected, allowing either an insert or a + delete to be selected next. If false, a delete cannot be selected unless j < i, and an insert cannot be selected unless i < j. This corresponds to a similar restriction (with the ordering reversed) in calculate_direct_scrolling, which is intended to ensure that lines marked as inserted will be blank. */ - int write_follows_p = 1; + bool write_follows_p = 1; /* For each row in the new matrix what row of the old matrix it is. */ - int *copy_from = (int *) alloca (window_size * sizeof (int)); + int *copy_from = alloca (window_size * sizeof *copy_from); /* Non-zero for each row in the new matrix that is retained from the old matrix. Lines not retained are empty. */ - char *retained_p = (char *) alloca (window_size * sizeof (char)); + char *retained_p = alloca (window_size * sizeof *retained_p); memset (retained_p, 0, window_size * sizeof (char)); @@ -796,13 +792,12 @@ do_direct_scrolling (struct frame *frame, struct glyph_matrix *current_matrix, void -scrolling_1 (FRAME_PTR frame, int window_size, int unchanged_at_top, +scrolling_1 (struct frame *frame, int window_size, int unchanged_at_top, int unchanged_at_bottom, int *draw_cost, int *old_draw_cost, int *old_hash, int *new_hash, int free_at_end) { - struct matrix_elt *matrix; - matrix = ((struct matrix_elt *) - alloca ((window_size + 1) * (window_size + 1) * sizeof *matrix)); + struct matrix_elt *matrix + = alloca ((window_size + 1) * (window_size + 1) * sizeof *matrix); if (FRAME_SCROLL_REGION_OK (frame)) { @@ -886,7 +881,7 @@ scrolling_max_lines_saved (int start, int end, overhead and multiply factor values */ static void -line_ins_del (FRAME_PTR frame, int ov1, int pf1, int ovn, int pfn, +line_ins_del (struct frame *frame, int ov1, int pf1, int ovn, int pfn, register int *ov, register int *mf) { register int i; @@ -904,7 +899,7 @@ line_ins_del (FRAME_PTR frame, int ov1, int pf1, int ovn, int pfn, } static void -ins_del_costs (FRAME_PTR frame, +ins_del_costs (struct frame *frame, const char *one_line_string, const char *multi_string, const char *setup_string, const char *cleanup_string, int *costvec, int *ncostvec, @@ -960,7 +955,7 @@ ins_del_costs (FRAME_PTR frame, */ void -do_line_insertion_deletion_costs (FRAME_PTR frame, +do_line_insertion_deletion_costs (struct frame *frame, const char *ins_line_string, const char *multi_ins_string, const char *del_line_string,