2017-04-04 2 views
1

Je suis this modèle pour la configuration de mon vim personnalisé avec Nix. Mon vim-config/default.nix est la suivante:Surcharge python avec python3 dans vim_configurable.customize

{ pkgs }: 

let 
    my_plugins = import ./plugins.nix { inherit (pkgs) vimUtils fetchFromGitHub; }; 
in with (pkgs // { python = pkgs.python3; }); vim_configurable.customize { 
    name = "vim"; 
    vimrcConfig = { 
    customRC = '' 
     syntax on 
     filetype on 
     " ... 
    ''; 

    vam.knownPlugins = vimPlugins // my_plugins; 
    vam.pluginDictionaries = [ 
     { names = [ 
     "ctrlp" 
     # ... 
     ]; } 
    ]; 
    }; 
} 

Bien qu'il y ait une substitution (pkgs // { python = pkgs.python3; }) sur la ligne 5, python3 est toujours pas utilisé (quand je lance vim --version il montre +python -python3). Est-ce que je manque quelque chose?

Répondre

1

Il s'avère que with (pkgs // { python = pkgs.python3; }); modifie uniquement python dans l'étendue suivant l'instruction with. Le python utilisé dans vim_configurable n'est pas affecté. Ce que je fini par faire est de faire une version python3 de vim_configurable utilisant vimUtils.makeCustomizable:

vim-config/default.nix:

{ pkgs }: 

let 
  my_plugins = import ./plugins.nix { inherit (pkgs) vimUtils fetchFromGitHub; }; 
  configurable_nix_path = <nixpkgs/pkgs/applications/editors/vim/configurable.nix>; 
  my_vim_configurable = with pkgs; vimUtils.makeCustomizable (callPackage configurable_nix_path { 
    inherit (darwin.apple_sdk.frameworks) CoreServices Cocoa Foundation CoreData; 
    inherit (darwin) libobjc cf-private; 

    features = "huge"; # one of  tiny, small, normal, big or huge 
    lua = pkgs.lua5_1; 
    gui = config.vim.gui or "auto"; 
    python = python3; 

    # optional features by flags 
    flags = [ "python" "X11" ]; 
  }); 

in with pkgs; my_vim_configurable.customize { 
  name = "vim"; 
  vimrcConfig = { 
    customRC = '' 
      syntax on 
      “... 
    ''; 

    vam.knownPlugins = vimPlugins // my_plugins; 
    vam.pluginDictionaries = [ 
      { names = [ 
        "ctrlp" 
        # ... 
      ]; } 
    ]; 
  }; 
} 
+0

Merci, très utile. La suppression des guillemets dans configurable_nix_path conduit à une évaluation plus efficace (et sans avertissement); voir https://groups.google.com/forum/#!topic/nix-devel/mPyaxyRShFE –

+0

Merci @KlaasvanSchelven, je n'ai pas vu l'avertissement moi-même, mais on dirait que c'est une solution plus efficace. J'ai mis à jour la réponse pour refléter ce changement. – Ben