comparison src/normal.c @ 344:7033303ea0c0 v7.0089

updated for version 7.0089
author vimboss
date Tue, 21 Jun 2005 22:37:39 +0000
parents 03b3684919e3
children d2bc505a6d91
comparison
equal deleted inserted replaced
343:607cff4bc0cb 344:7033303ea0c0
79 static void nv_clear __ARGS((cmdarg_T *cap)); 79 static void nv_clear __ARGS((cmdarg_T *cap));
80 static void nv_ctrlo __ARGS((cmdarg_T *cap)); 80 static void nv_ctrlo __ARGS((cmdarg_T *cap));
81 static void nv_hat __ARGS((cmdarg_T *cap)); 81 static void nv_hat __ARGS((cmdarg_T *cap));
82 static void nv_Zet __ARGS((cmdarg_T *cap)); 82 static void nv_Zet __ARGS((cmdarg_T *cap));
83 static void nv_ident __ARGS((cmdarg_T *cap)); 83 static void nv_ident __ARGS((cmdarg_T *cap));
84 #ifdef FEAT_VISUAL
85 static int get_visual_text __ARGS((cmdarg_T *cap, char_u **pp, int *lenp));
86 #endif
87 static void nv_tagpop __ARGS((cmdarg_T *cap)); 84 static void nv_tagpop __ARGS((cmdarg_T *cap));
88 static void nv_scroll __ARGS((cmdarg_T *cap)); 85 static void nv_scroll __ARGS((cmdarg_T *cap));
89 static void nv_right __ARGS((cmdarg_T *cap)); 86 static void nv_right __ARGS((cmdarg_T *cap));
90 static void nv_left __ARGS((cmdarg_T *cap)); 87 static void nv_left __ARGS((cmdarg_T *cap));
91 static void nv_up __ARGS((cmdarg_T *cap)); 88 static void nv_up __ARGS((cmdarg_T *cap));
5165 do_cmdline_cmd(buf); 5162 do_cmdline_cmd(buf);
5166 5163
5167 vim_free(buf); 5164 vim_free(buf);
5168 } 5165 }
5169 5166
5170 #ifdef FEAT_VISUAL 5167 #if defined(FEAT_VISUAL) || defined(PROTO)
5171 /* 5168 /*
5172 * Get visually selected text, within one line only. 5169 * Get visually selected text, within one line only.
5173 * Returns FAIL if more than one line selected. 5170 * Returns FAIL if more than one line selected.
5174 */ 5171 */
5175 static int 5172 int
5176 get_visual_text(cap, pp, lenp) 5173 get_visual_text(cap, pp, lenp)
5177 cmdarg_T *cap; 5174 cmdarg_T *cap;
5178 char_u **pp; /* return: start of selected text */ 5175 char_u **pp; /* return: start of selected text */
5179 int *lenp; /* return: length of selected text */ 5176 int *lenp; /* return: length of selected text */
5180 { 5177 {
5181 if (VIsual_mode != 'V') 5178 if (VIsual_mode != 'V')
5182 unadjust_for_sel(); 5179 unadjust_for_sel();
5183 if (VIsual.lnum != curwin->w_cursor.lnum) 5180 if (VIsual.lnum != curwin->w_cursor.lnum)
5184 { 5181 {
5185 clearopbeep(cap->oap); 5182 if (cap != NULL)
5183 clearopbeep(cap->oap);
5186 return FAIL; 5184 return FAIL;
5187 } 5185 }
5188 if (VIsual_mode == 'V') 5186 if (VIsual_mode == 'V')
5189 { 5187 {
5190 *pp = ml_get_curline(); 5188 *pp = ml_get_curline();
5590 clearopbeep(cap->oap); 5588 clearopbeep(cap->oap);
5591 return; 5589 return;
5592 } 5590 }
5593 #endif 5591 #endif
5594 5592
5595 # ifdef FEAT_VISUAL 5593 ptr = grab_file_name(cap->count1);
5596 /*
5597 * In Visual mode, use the selected text as a file name.
5598 * Don't allow selection across multiple lines.
5599 */
5600 if (VIsual_active)
5601 {
5602 int len;
5603
5604 if (get_visual_text(cap, &ptr, &len) == FAIL)
5605 return;
5606 ptr = find_file_name_in_path(ptr, len,
5607 FNAME_MESS|FNAME_EXP|FNAME_REL, cap->count1, curbuf->b_ffname);
5608 }
5609 else
5610 # endif
5611 ptr = file_name_at_cursor(FNAME_MESS|FNAME_HYP|FNAME_EXP|FNAME_REL,
5612 cap->count1);
5613 5594
5614 if (ptr != NULL) 5595 if (ptr != NULL)
5615 { 5596 {
5616 /* do autowrite if necessary */ 5597 /* do autowrite if necessary */
5617 if (curbufIsChanged() && curbuf->b_nwindows <= 1 && !P_HID(curbuf)) 5598 if (curbufIsChanged() && curbuf->b_nwindows <= 1 && !P_HID(curbuf))