1- use std:: path:: Path ;
21use std:: path:: PathBuf ;
32
43use dprint_core:: configuration:: ConfigKeyMap ;
54use dprint_core:: configuration:: GlobalConfiguration ;
6- use dprint_core:: configuration:: ResolveConfigurationResult ;
75use dprint_core:: generate_plugin_code;
6+ use dprint_core:: plugins:: CheckConfigUpdatesMessage ;
7+ use dprint_core:: plugins:: ConfigChange ;
88use dprint_core:: plugins:: FileMatchingInfo ;
9+ use dprint_core:: plugins:: FormatRange ;
910use dprint_core:: plugins:: FormatResult ;
1011use dprint_core:: plugins:: PluginInfo ;
12+ use dprint_core:: plugins:: PluginResolveConfigurationResult ;
13+ use dprint_core:: plugins:: SyncFormatRequest ;
14+ use dprint_core:: plugins:: SyncHostFormatRequest ;
1115use dprint_core:: plugins:: SyncPluginHandler ;
12- use dprint_core:: plugins:: SyncPluginInfo ;
1316
1417use super :: configuration:: resolve_config;
1518use super :: configuration:: Configuration ;
@@ -21,28 +24,15 @@ impl SyncPluginHandler<Configuration> for MarkdownPluginHandler {
2124 & mut self ,
2225 config : ConfigKeyMap ,
2326 global_config : & GlobalConfiguration ,
24- ) -> ResolveConfigurationResult < Configuration > {
25- resolve_config ( config, global_config)
26- }
27-
28- // Markdown extensions: markdown, mdown, mkdn, mdwn, mkd, md
29- // ref: https://superuser.com/questions/249436/file-extension-for-markdown-files/285878#285878
30- // ref: https://github.com/denoland/deno_registry2/issues/206
31- fn plugin_info ( & mut self ) -> SyncPluginInfo {
32- let version = env ! ( "CARGO_PKG_VERSION" ) . to_string ( ) ;
33- SyncPluginInfo {
34- info : PluginInfo {
35- name : env ! ( "CARGO_PKG_NAME" ) . to_string ( ) ,
36- version : version. clone ( ) ,
37- config_key : "markdown" . to_string ( ) ,
38- help_url : "https://dprint.dev/plugins/markdown" . to_string ( ) ,
39- config_schema_url : format ! (
40- "https://plugins.dprint.dev/dprint/dprint-plugin-markdown/{}/schema.json" ,
41- version
42- ) ,
43- update_url : Some ( "https://plugins.dprint.dev/dprint/dprint-plugin-markdown/latest.json" . to_string ( ) ) ,
44- } ,
27+ ) -> PluginResolveConfigurationResult < Configuration > {
28+ let config = resolve_config ( config, global_config) ;
29+ PluginResolveConfigurationResult {
30+ config : config. config ,
31+ diagnostics : config. diagnostics ,
4532 file_matching : FileMatchingInfo {
33+ // Markdown extensions: markdown, mdown, mkdn, mdwn, mkd, md
34+ // ref: https://superuser.com/questions/249436/file-extension-for-markdown-files/285878#285878
35+ // ref: https://github.com/denoland/deno_registry2/issues/206
4636 file_extensions : vec ! [
4737 "md" . to_string( ) ,
4838 "mkd" . to_string( ) ,
@@ -56,24 +46,47 @@ impl SyncPluginHandler<Configuration> for MarkdownPluginHandler {
5646 }
5747 }
5848
49+ fn check_config_updates ( & self , _message : CheckConfigUpdatesMessage ) -> Result < Vec < ConfigChange > , anyhow:: Error > {
50+ Ok ( Vec :: new ( ) )
51+ }
52+
53+ fn plugin_info ( & mut self ) -> PluginInfo {
54+ let version = env ! ( "CARGO_PKG_VERSION" ) . to_string ( ) ;
55+ PluginInfo {
56+ name : env ! ( "CARGO_PKG_NAME" ) . to_string ( ) ,
57+ version : version. clone ( ) ,
58+ config_key : "markdown" . to_string ( ) ,
59+ help_url : "https://dprint.dev/plugins/markdown" . to_string ( ) ,
60+ config_schema_url : format ! (
61+ "https://plugins.dprint.dev/dprint/dprint-plugin-markdown/{}/schema.json" ,
62+ version
63+ ) ,
64+ update_url : Some ( "https://plugins.dprint.dev/dprint/dprint-plugin-markdown/latest.json" . to_string ( ) ) ,
65+ }
66+ }
67+
5968 fn license_text ( & mut self ) -> String {
6069 std:: str:: from_utf8 ( include_bytes ! ( "../LICENSE" ) ) . unwrap ( ) . into ( )
6170 }
6271
6372 fn format (
6473 & mut self ,
65- _file_path : & Path ,
66- file_bytes : Vec < u8 > ,
67- config : & Configuration ,
68- mut format_with_host : impl FnMut ( & Path , Vec < u8 > , & ConfigKeyMap ) -> FormatResult ,
74+ request : SyncFormatRequest < Configuration > ,
75+ mut format_with_host : impl FnMut ( SyncHostFormatRequest ) -> FormatResult ,
6976 ) -> FormatResult {
70- let file_text = String :: from_utf8 ( file_bytes) ?;
71- return super :: format_text ( & file_text, config, |tag, file_text, line_width| {
77+ let file_text = String :: from_utf8 ( request . file_bytes ) ?;
78+ return super :: format_text ( & file_text, request . config , |tag, file_text, line_width| {
7279 if let Some ( ext) = tag_to_extension ( tag) {
7380 let file_path = PathBuf :: from ( format ! ( "file.{}" , ext) ) ;
7481 let mut additional_config = ConfigKeyMap :: new ( ) ;
7582 additional_config. insert ( "lineWidth" . into ( ) , ( line_width as i32 ) . into ( ) ) ;
76- let result = format_with_host ( & file_path, file_text. to_string ( ) . into_bytes ( ) , & additional_config) ;
83+ let request = SyncHostFormatRequest {
84+ file_path : & file_path,
85+ file_bytes : file_text. as_bytes ( ) ,
86+ range : FormatRange :: None ,
87+ override_config : & additional_config,
88+ } ;
89+ let result = format_with_host ( request) ;
7790 match result {
7891 Ok ( Some ( bytes) ) => Ok ( Some ( String :: from_utf8 ( bytes) ?) ) ,
7992 Ok ( None ) => Ok ( None ) ,
0 commit comments