From 66716681f892e3ab70b5ea19519ad2c582377a6f Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Tue, 24 Oct 2023 12:56:24 +0900 Subject: [PATCH] Fix ftplugins --- README.md | 32 -------------------------------- denops/dpp/dpp.ts | 25 +++++++++++++++++++------ 2 files changed, 19 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 5474f8e..18871f1 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,6 @@ The development is supported by - [Introduction](#introduction) - [Install](#install) - [Requirements](#requirements) - - [Basic installation](#basic-installation) - [Config example](#config-example) @@ -39,37 +38,6 @@ Dpp.vim requires both Deno and denops.vim. - - -### Basic installation - -You can install dpp.vim by your vimrc/init.vim. - -```vim -let $CACHE = expand('~/.cache') -if !($CACHE->isdirectory()) - call mkdir($CACHE, 'p') -endif - -for s:plugin in [ - \ 'Shougo/dpp.vim', - \ 'denops/denops.vim', - \ ]->filter({ _, val -> - \ &runtimepath !~# '/' .. val->fnamemodify(':t') }) - " Search from current directory - let s:dir = s:plugin->fnamemodify(':t')->fnamemodify(':p') - if !(s:dir->isdirectory()) - " Search from $CACHE directory - let s:dir = $CACHE .. '/dpp/repos/github.com/' .. s:plugin - if !(s:dir->isdirectory()) - execute '!git clone https://github.com/' .. s:plugin s:dir - endif - endif - - if s:plugin->fnamemodify(':t') ==# 'dpp.vim' - execute 'set runtimepath^=' - \ .. s:dir->fnamemodify(':p')->substitute('[/\\]$', '', '') - endif -endfor -``` ### Config example diff --git a/denops/dpp/dpp.ts b/denops/dpp/dpp.ts index cce0eaf..ddd3654 100644 --- a/denops/dpp/dpp.ts +++ b/denops/dpp/dpp.ts @@ -251,6 +251,10 @@ export class Dpp { `let &runtimepath = '${newRuntimepath}'`, ]; + if (!configReturn.ftplugins) { + configReturn.ftplugins = {}; + } + // hooksFiles if (configReturn.hooksFiles) { for ( @@ -268,10 +272,6 @@ export class Dpp { // Use ftplugin only if (parsedHooksFile.ftplugin && is.Record(parsedHooksFile.ftplugin)) { - if (!configReturn.ftplugins) { - configReturn.ftplugins = {}; - } - // Merge ftplugins for (const filetype of Object.keys(parsedHooksFile.ftplugin)) { if (configReturn.ftplugins[filetype]) { @@ -319,6 +319,19 @@ export class Dpp { if (plugin.hook_add) { stateLines.push(plugin.hook_add); } + + // Merge ftplugins + if (plugin.ftplugin) { + for (const filetype of Object.keys(plugin.ftplugin)) { + if (configReturn.ftplugins[filetype]) { + configReturn.ftplugins[filetype] += `\n${ + plugin.ftplugin[filetype] + }`; + } else { + configReturn.ftplugins[filetype] = plugin.ftplugin[filetype]; + } + } + } } const inlineVimrcs = await Promise.all(options.inlineVimrcs.map( @@ -370,7 +383,7 @@ export class Dpp { "dpp#util#_generate_ftplugin", dppRuntimepath, configReturn.ftplugins, - ) as Record; + ) as Record; for (const path of Object.keys(generatedFtplugins)) { const parent = dirname(path); @@ -378,7 +391,7 @@ export class Dpp { await Deno.mkdir(parent, { recursive: true }); } - await Deno.writeTextFile(path, generatedFtplugins[path]); + await Deno.writeTextFile(path, generatedFtplugins[path].join("\n")); } }