components/vim/patches/vim-help.patch
author Rich Burridge <rich.burridge@oracle.com>
Tue, 02 May 2017 17:33:26 -0700
changeset 7964 d9801318ed3d
parent 7049 e8d705cba87d
permissions -rw-r--r--
25981468 Build ilmbase and openexr with the GNU compilers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
     1
--- a/src/ex_cmds.c	2016-09-21 15:16:13.032570431 -0700
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
     2
+++ b/src/ex_cmds.c	2016-09-21 15:16:13.055466074 -0700
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
     3
@@ -6276,6 +6276,8 @@
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
     4
 #ifdef FEAT_FOLDING
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
     5
     int		old_KeyTyped = KeyTyped;
379
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     6
 #endif
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
+    int		nohelp = FALSE, nominhelp = FALSE;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
+    char_u	*mhf = NULL;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
 
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
     if (eap != NULL)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
     {
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    12
@@ -6327,6 +6329,23 @@
379
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
     n = find_help_tags(arg, &num_matches, &matches,
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
 						 eap != NULL && eap->forceit);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
 
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
+    /*
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
+     * If we didn't find the help topic, check to see whether 'helpfile'
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
+     * (typically $VIMRUNTIME/doc/help.txt) exists.  If not, then we'll send the
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
+     * user to the minimized help file delivered with the core vim package which
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
+     * explains why there's no help and how to get it.
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
+     */
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
+    if (num_matches == 0 && mch_access((char *)p_hf, F_OK) < 0) {
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
+	nohelp = TRUE;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
+	mhf = alloc(MAXPATHL);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
+	STRNCPY(mhf, p_hf, MAXPATHL - 1);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
+	mhf[STRLEN(mhf) - 8] = '\0';
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
+	STRNCAT(mhf, "help_minimized.txt", MAXPATHL - STRLEN(mhf) - 1);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    28
+
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    29
+	if (mch_access((char *)mhf, F_OK) < 0)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    30
+	    nominhelp = TRUE;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    31
+    }
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    32
+
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    33
     i = 0;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    34
 #ifdef FEAT_MULTI_LANG
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    35
     if (n != FAIL && lang != NULL)
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    36
@@ -6339,7 +6358,7 @@
379
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    37
 		break;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    38
 	}
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    39
 #endif
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    40
-    if (i >= num_matches || n == FAIL)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    41
+    if (!nohelp && i >= num_matches || n == FAIL)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    42
     {
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    43
 #ifdef FEAT_MULTI_LANG
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    44
 	if (lang != NULL)
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    45
@@ -6352,9 +6371,11 @@
379
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    46
 	return;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    47
     }
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    48
 
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    49
-    /* The first match (in the requested language) is the best match. */
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    50
-    tag = vim_strsave(matches[i]);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    51
-    FreeWild(num_matches, matches);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    52
+    if (!nohelp) {
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    53
+	/* The first match (in the requested language) is the best match. */
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    54
+	tag = vim_strsave(matches[i]);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    55
+	FreeWild(num_matches, matches);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    56
+    }
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    57
 
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    58
 #ifdef FEAT_GUI
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    59
     need_mouse_correct = TRUE;
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    60
@@ -6386,12 +6407,14 @@
379
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    61
 	     * There is no help window yet.
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    62
 	     * Try to open the file specified by the "helpfile" option.
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    63
 	     */
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    64
-	    if ((helpfd = mch_fopen((char *)p_hf, READBIN)) == NULL)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    65
-	    {
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    66
-		smsg((char_u *)_("Sorry, help file \"%s\" not found"), p_hf);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    67
-		goto erret;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    68
+	    if (!nohelp || nominhelp) {
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    69
+		if ((helpfd = mch_fopen((char *)p_hf, READBIN)) == NULL)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    70
+		{
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    71
+		    smsg((char_u *)_("Sorry, help file \"%s\" not found"), p_hf);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    72
+		    goto erret;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    73
+		}
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    74
+		fclose(helpfd);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    75
 	    }
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    76
-	    fclose(helpfd);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    77
 
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    78
 #ifdef FEAT_WINDOWS
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    79
 	    /* Split off help window; put it at far top if no position
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    80
@@ -6420,7 +6443,7 @@
379
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    81
 	     * Set the alternate file to the previously edited file.
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    82
 	     */
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    83
 	    alt_fnum = curbuf->b_fnum;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    84
-	    (void)do_ecmd(0, NULL, NULL, NULL, ECMD_LASTL,
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    85
+	    (void)do_ecmd(0, mhf, NULL, NULL, ECMD_LASTL,
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    86
 			  ECMD_HIDE + ECMD_SET_HELP,
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    87
 #ifdef FEAT_WINDOWS
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    88
 			  NULL  /* buffer is still open, don't store info */
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    89
@@ -6443,7 +6466,7 @@
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    90
     KeyTyped = old_KeyTyped;
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    91
 #endif
379
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    92
 
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    93
-    if (tag != NULL)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    94
+    if (!nohelp && tag != NULL)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    95
 	do_tag(tag, DT_HELP, 1, FALSE, TRUE);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    96
 
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    97
     /* Delete the empty buffer if we're not using it.  Careful: autocommands
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
    98
@@ -6461,7 +6484,8 @@
379
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    99
 	curwin->w_alt_fnum = alt_fnum;
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   100
 
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   101
 erret:
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   102
-    vim_free(tag);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   103
+    if (!nohelp)
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   104
+	vim_free(tag);
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   105
 }
c6a17bba1da3 7038754 vim 7.3
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   106
 
7049
e8d705cba87d 24676533 vim 8.0.0016
Danek Duvall <danek.duvall@oracle.com>
parents: 379
diff changeset
   107
 /*