1
- use std:: path:: Path ;
2
1
use std:: path:: PathBuf ;
3
2
4
3
use dprint_core:: configuration:: ConfigKeyMap ;
5
4
use dprint_core:: configuration:: GlobalConfiguration ;
6
- use dprint_core:: configuration:: ResolveConfigurationResult ;
7
5
use dprint_core:: generate_plugin_code;
6
+ use dprint_core:: plugins:: CheckConfigUpdatesMessage ;
7
+ use dprint_core:: plugins:: ConfigChange ;
8
8
use dprint_core:: plugins:: FileMatchingInfo ;
9
+ use dprint_core:: plugins:: FormatRange ;
9
10
use dprint_core:: plugins:: FormatResult ;
10
11
use dprint_core:: plugins:: PluginInfo ;
12
+ use dprint_core:: plugins:: PluginResolveConfigurationResult ;
13
+ use dprint_core:: plugins:: SyncFormatRequest ;
14
+ use dprint_core:: plugins:: SyncHostFormatRequest ;
11
15
use dprint_core:: plugins:: SyncPluginHandler ;
12
- use dprint_core:: plugins:: SyncPluginInfo ;
13
16
14
17
use super :: configuration:: resolve_config;
15
18
use super :: configuration:: Configuration ;
@@ -21,28 +24,15 @@ impl SyncPluginHandler<Configuration> for MarkdownPluginHandler {
21
24
& mut self ,
22
25
config : ConfigKeyMap ,
23
26
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 ,
45
32
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
46
36
file_extensions : vec ! [
47
37
"md" . to_string( ) ,
48
38
"mkd" . to_string( ) ,
@@ -56,24 +46,47 @@ impl SyncPluginHandler<Configuration> for MarkdownPluginHandler {
56
46
}
57
47
}
58
48
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
+
59
68
fn license_text ( & mut self ) -> String {
60
69
std:: str:: from_utf8 ( include_bytes ! ( "../LICENSE" ) ) . unwrap ( ) . into ( )
61
70
}
62
71
63
72
fn format (
64
73
& 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 ,
69
76
) -> 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| {
72
79
if let Some ( ext) = tag_to_extension ( tag) {
73
80
let file_path = PathBuf :: from ( format ! ( "file.{}" , ext) ) ;
74
81
let mut additional_config = ConfigKeyMap :: new ( ) ;
75
82
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) ;
77
90
match result {
78
91
Ok ( Some ( bytes) ) => Ok ( Some ( String :: from_utf8 ( bytes) ?) ) ,
79
92
Ok ( None ) => Ok ( None ) ,
0 commit comments