whole_func_string: function extensionCommand(shell, args, data, evaluationId) {
    var deferred = shell.runtime.q.defer();
  
    var name = args.name;
    var moduleName = 'ijs.ext.' + name;
    var modulePath = args.path || moduleName;
  
    installer.install(modulePath, shell.config.userPath, /* quiet */ true, function(error) {
      if (error) {
        deferred.reject(shell.createError('Unable to install extension module "%s"', moduleName));
      }
      else {
        var extensionPath = path.join(shell.config.userPath, 'node_modules', moduleName);
        var extension = require(extensionPath);
  
        try {
          extension.initialize(shell, function(error, result) {
            if (error) {
              deferred.reject(shell.createError('Error initializing extension'));
            }
            else {
              shell.loadedExtensions[name] = true;
              deferred.resolve(result);
            }
          });
        }
        catch(e) {
          deferred.reject(shell.createError('Error initializing extension'));
        }
      }
    })
  
    return deferred.promise;
  }
func_code_string: function extensionCommand(shell, args, data, evaluationId) {
    var deferred = shell.runtime.q.defer();
  
    var name = args.name;
    var moduleName = 'ijs.ext.' + name;
    var modulePath = args.path || moduleName;
  
    installer.install(modulePath, shell.config.userPath, /* quiet */ true, function(error) {
      if (error) {
        deferred.reject(shell.createError('Unable to install extension module "%s"', moduleName));
      }
      else {
        var extensionPath = path.join(shell.config.userPath, 'node_modules', moduleName);
        var extension = require(extensionPath);
  
        try {
          extension.initialize(shell, function(error, result) {
            if (error) {
              deferred.reject(shell.createError('Error initializing extension'));
            }
            else {
              shell.loadedExtensions[name] = true;
              deferred.resolve(result);
            }
          });
        }
        catch(e) {
          deferred.reject(shell.createError('Error initializing extension'));
        }
      }
    })
  
    return deferred.promise;
  }
func_documentation_string: Implements the %extension command, that can be used to install a specific named module as a shell extension, using npm.