emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] scratch/editorconfig-cc 21ea6f23c2 063/351: Support charset pro


From: Stefan Monnier
Subject: [nongnu] scratch/editorconfig-cc 21ea6f23c2 063/351: Support charset property
Date: Thu, 13 Jun 2024 18:38:41 -0400 (EDT)

branch: scratch/editorconfig-cc
commit 21ea6f23c2e9629dcb45e67a91a5326782464dd9
Author: 10sr <8slashes+git@gmail.com>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    Support charset property
---
 editorconfig.el | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/editorconfig.el b/editorconfig.el
index 9a7be9c969..897ea7e909 100644
--- a/editorconfig.el
+++ b/editorconfig.el
@@ -193,9 +193,25 @@ NOTE: Only the **buffer local** value of VARIABLE will be 
set."
     (when (not (equal size "tab")) (setq size nil)))
   )
 
-(defun editorconfig-set-line-ending (end-of-line)
-  "Set line ending style to CR, LF, or CRLF by END-OF-LINE."
-  )
+(defun editorconfig-set-coding-system (end-of-line charset)
+  "Set buffer coding system by END-OF-LINE and CHARSET."
+  (let ((eol (cond
+               ((equal end-of-line "lf") 'undecided-unix)
+               ((equal end-of-line "cr") 'undecided-mac)
+               ((equal end-of-line "crlf") 'undecided-dos)
+               (t 'undecided)))
+         (cs (cond
+               ((equal charset "latin1") 'iso-latin-1)
+               ((equal charset "utf-8") 'utf-8)
+               ((equal charset "utf-8-bom") 'utf-8-with-signature)
+               ((equal charset "utf-16be") 'utf-16be)
+               ((equal charset "utf-16le") 'utf-16le)
+               (t 'undecided))))
+    (set-buffer-file-coding-system (merge-coding-systems
+                                     cs
+                                     eol)
+      nil t)))
+
 
 (defun editorconfig-set-line-length (length)
   "Set the max line length (fill-column) to LENGTH."
@@ -234,6 +250,9 @@ It calls `editorconfig-get-properties-from-exec' if
                       (funcall editorconfig-get-properties-function))))
       (if props
         (progn
+          (editorconfig-set-coding-system
+            (gethash 'end_of_line props)
+            (gethash 'charset props))
           (editorconfig-set-line-length (gethash 'max_line_length props))
           (run-hook-with-args 'editorconfig-custom-hooks props))
         (display-warning :error "EditorConfig core program is not available.  
Styles will not be applied.")))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]