Patch 8.1.0472
Problem:    Dosinst command has a few flaws.
Solution:   Register DisplayIcon, DisplayVersion and Publisher for the
            uninstaller. (closes #3485)  Don't set 'diffexpr' if internal diff
            is supported. Allow for using Vi compatible from the command line.
            Remove needless sleeps.  Add comments in the generated _vimrc.
            (Ken Takata, closes #3525)
Files:      src/dosinst.c


*** ../vim-8.1.0471/src/dosinst.c       2018-08-18 19:04:32.458231905 +0200
--- src/dosinst.c       2018-10-13 17:23:40.545425239 +0200
***************
*** 18,23 ****
--- 18,24 ----
   */
  #define DOSINST
  #include "dosinst.h"
+ #include <io.h>
  
  #define GVIMEXT64_PATH            "GvimExt64\\gvimext.dll"
  #define GVIMEXT32_PATH            "GvimExt32\\gvimext.dll"
***************
*** 63,68 ****
--- 64,70 ----
  enum
  {
      compat_vi = 1,
+     compat_vim,
      compat_some_enhancements,
      compat_all_enhancements
  };
***************
*** 70,75 ****
--- 72,78 ----
  {
      "\nChoose the default way to run Vim:",
      "Vi compatible",
+     "Vim default",
      "with some Vim enhancements",
      "with syntax highlighting and other features switched on",
  };
***************
*** 567,573 ****
                        sleep(1);  /* wait for uninstaller to start up */
                        num_windows = 0;
                        EnumWindows(window_cb, 0);
-                       sleep(1);  /* wait for windows to be counted */
                        if (num_windows == 0)
                        {
                            /* Did not find the uninstaller, ask user to press
--- 570,575 ----
***************
*** 583,591 ****
                            {
                                printf(".");
                                fflush(stdout);
                                num_windows = 0;
                                EnumWindows(window_cb, 0);
-                               sleep(1);  /* wait for windows to be counted */
                            } while (num_windows > 0);
                        }
                        printf("\nDone!\n");
--- 585,593 ----
                            {
                                printf(".");
                                fflush(stdout);
+                               sleep(1);  /* wait for the uninstaller to 
finish */
                                num_windows = 0;
                                EnumWindows(window_cb, 0);
                            } while (num_windows > 0);
                        }
                        printf("\nDone!\n");
***************
*** 1159,1170 ****
--- 1161,1181 ----
      switch (compat_choice)
      {
        case compat_vi:
+                   fprintf(fd, "\" Vi compatible\n");
                    fprintf(fd, "set compatible\n");
                    break;
+       case compat_vim:
+                   fprintf(fd, "\" Vim's default behavior\n");
+                   fprintf(fd, "if &compatible\n");
+                   fprintf(fd, "  set nocompatible\n");
+                   fprintf(fd, "endif\n");
+                   break;
        case compat_some_enhancements:
+                   fprintf(fd, "\" Vim with some enhancements\n");
                    fprintf(fd, "source $VIMRUNTIME/defaults.vim\n");
                    break;
        case compat_all_enhancements:
+                   fprintf(fd, "\" Vim with all enhancements\n");
                    fprintf(fd, "source $VIMRUNTIME/vimrc_example.vim\n");
                    break;
      }
***************
*** 1173,1187 ****
--- 1184,1204 ----
        case remap_no:
                    break;
        case remap_win:
+                   fprintf(fd, "\n");
+                   fprintf(fd, "\" Remap a few keys for Windows behavior\n");
                    fprintf(fd, "source $VIMRUNTIME/mswin.vim\n");
                    break;
      }
      switch (mouse_choice)
      {
        case mouse_xterm:
+                   fprintf(fd, "\n");
+                   fprintf(fd, "\" Mouse behavior (the Unix way)\n");
                    fprintf(fd, "behave xterm\n");
                    break;
        case mouse_mswin:
+                   fprintf(fd, "\n");
+                   fprintf(fd, "\" Mouse behavior (the Windows way)\n");
                    fprintf(fd, "behave mswin\n");
                    break;
        case mouse_default:
***************
*** 1192,1198 ****
        /* Use the diff.exe that comes with the self-extracting gvim.exe. */
        fclose(tfd);
        fprintf(fd, "\n");
!       fprintf(fd, "set diffexpr=MyDiff()\n");
        fprintf(fd, "function MyDiff()\n");
        fprintf(fd, "  let opt = '-a --binary '\n");
        fprintf(fd, "  if &diffopt =~ 'icase' | let opt = opt . '-i ' | 
endif\n");
--- 1209,1219 ----
        /* Use the diff.exe that comes with the self-extracting gvim.exe. */
        fclose(tfd);
        fprintf(fd, "\n");
!       fprintf(fd, "\" Use the internal diff if available.\n");
!       fprintf(fd, "\" Otherwise use the special 'diffexpr' for Windows.\n");
!       fprintf(fd, "if &diffopt !~# 'internal'\n");
!       fprintf(fd, "  set diffexpr=MyDiff()\n");
!       fprintf(fd, "endif\n");
        fprintf(fd, "function MyDiff()\n");
        fprintf(fd, "  let opt = '-a --binary '\n");
        fprintf(fd, "  if &diffopt =~ 'icase' | let opt = opt . '-i ' | 
endif\n");
***************
*** 1491,1497 ****
      HKEY hRootKey,
      const char *appname,
      const char *display_name,
!     const char *uninstall_string)
  {
      LONG lRet = reg_create_key_and_value(hRootKey, appname,
                             "DisplayName", display_name, KEY_WOW64_64KEY);
--- 1512,1521 ----
      HKEY hRootKey,
      const char *appname,
      const char *display_name,
!     const char *uninstall_string,
!     const char *display_icon,
!     const char *display_version,
!     const char *publisher)
  {
      LONG lRet = reg_create_key_and_value(hRootKey, appname,
                             "DisplayName", display_name, KEY_WOW64_64KEY);
***************
*** 1499,1504 ****
--- 1523,1537 ----
      if (ERROR_SUCCESS == lRet)
        lRet = reg_create_key_and_value(hRootKey, appname,
                     "UninstallString", uninstall_string, KEY_WOW64_64KEY);
+     if (ERROR_SUCCESS == lRet)
+       lRet = reg_create_key_and_value(hRootKey, appname,
+                    "DisplayIcon", display_icon, KEY_WOW64_64KEY);
+     if (ERROR_SUCCESS == lRet)
+       lRet = reg_create_key_and_value(hRootKey, appname,
+                    "DisplayVersion", display_version, KEY_WOW64_64KEY);
+     if (ERROR_SUCCESS == lRet)
+       lRet = reg_create_key_and_value(hRootKey, appname,
+                    "Publisher", publisher, KEY_WOW64_64KEY);
      return lRet;
  }
  
***************
*** 1519,1524 ****
--- 1552,1558 ----
      char      vim_exe_path[BUFSIZE];
      char      display_name[BUFSIZE];
      char      uninstall_string[BUFSIZE];
+     char      icon_string[BUFSIZE];
      int               i;
      int               loop_count = is_64bit_os() ? 2 : 1;
      DWORD     flag;
***************
*** 1583,1593 ****
      else
        sprintf(uninstall_string, "%s\\uninstall-gui.exe", installdir);
  
      lRet = register_uninstall(
        HKEY_LOCAL_MACHINE,
        "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Vim " 
VIM_VERSION_SHORT,
        display_name,
!       uninstall_string);
      if (ERROR_SUCCESS != lRet)
        return FAIL;
  
--- 1617,1632 ----
      else
        sprintf(uninstall_string, "%s\\uninstall-gui.exe", installdir);
  
+     sprintf(icon_string, "%s\\gvim.exe,0", installdir);
+ 
      lRet = register_uninstall(
        HKEY_LOCAL_MACHINE,
        "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Vim " 
VIM_VERSION_SHORT,
        display_name,
!       uninstall_string,
!       icon_string,
!       VIM_VERSION_SHORT,
!       "Bram Moolenaar et al.");
      if (ERROR_SUCCESS != lRet)
        return FAIL;
  
***************
*** 2219,2224 ****
--- 2258,2265 ----
      printf("    Remap keys when creating a default _vimrc file.\n");
      printf("-vimrc-behave [unix|mswin|default]\n");
      printf("    Set mouse behavior when creating a default _vimrc file.\n");
+     printf("-vimrc-compat [vi|vim|defaults|all]\n");
+     printf("    Set Vi compatibility when creating a default _vimrc file.\n");
      printf("-install-popup\n");
      printf("    Install the Edit-with-Vim context menu entry\n");
      printf("-install-openwith\n");
***************
*** 2296,2301 ****
--- 2337,2356 ----
            else if (strcmp(argv[i], "default") == 0)
                mouse_choice = mouse_default;
        }
+       else if (strcmp(argv[i], "-vimrc-compat") == 0)
+       {
+           if (i + 1 == argc)
+               break;
+           i++;
+           if (strcmp(argv[i], "vi") == 0)
+               compat_choice = compat_vi;
+           else if (strcmp(argv[i], "vim") == 0)
+               compat_choice = compat_vim;
+           else if (strcmp(argv[i], "defaults") == 0)
+               compat_choice = compat_some_enhancements;
+           else if (strcmp(argv[i], "all") == 0)
+               compat_choice = compat_all_enhancements;
+       }
        else if (strcmp(argv[i], "-install-popup") == 0)
        {
            init_popup_choice();
***************
*** 2546,2552 ****
  
        /* When nothing found exit quietly.  If something found wait for
         * a little while, so that the user can read the messages. */
!       if (i)
            sleep(3);
        exit(0);
      }
--- 2601,2607 ----
  
        /* When nothing found exit quietly.  If something found wait for
         * a little while, so that the user can read the messages. */
!       if (i && _isatty(1))
            sleep(3);
        exit(0);
      }
*** ../vim-8.1.0471/src/version.c       2018-10-12 22:15:06.597268116 +0200
--- src/version.c       2018-10-13 17:25:17.988761109 +0200
***************
*** 794,795 ****
--- 794,797 ----
  {   /* Add new patch number below this line */
+ /**/
+     472,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
194. Your business cards contain your e-mail and home page address.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui