docs: def _runtime(self, project, base):
          ''' first runtimes all project type files, like `project/type.vim`, then the specific project file, like
          `project/type/name.vim`.
          '''
          def run(path_suf):
              path = '{}/{}'.format(base, path_suf)
              err = 'error sourcing {}.vim: {{}}'.format(path)
              return (
                  self.vim.runtime(path)
                  .cata(L(err.format)(_) >> List, lambda a: List())
              )
          return (
              project.all_types.flat_map(run) +
              (project.tpe.map(_ + '/' + project.name).map(run) | List()) +
              run('all/*')
          ).map(Error)