瀏覽代碼

ox-latex: Tiny refactoring

* lisp/ox-latex.el (org-latex-guess-polyglossia-language): Tiny
  reactoring.
Nicolas Goaziou 9 年之前
父節點
當前提交
4117e398e6
共有 1 個文件被更改,包括 28 次插入26 次删除
  1. 28 26
      lisp/ox-latex.el

+ 28 - 26
lisp/ox-latex.el

@@ -1302,40 +1302,42 @@ replaced with the language of the document or
 using \setdefaultlanguage and not as an option to the package.
 
 Return the new header."
-  (let ((language (plist-get info :language))
-	result)
+  (let ((language (plist-get info :language)))
     ;; If no language is set or Polyglossia is not loaded, return
     ;; HEADER as-is.
-    (if (or (not (org-string-nw-p language))
+    (if (or (not (stringp language))
 	    (not (string-match
-		  "\\\\usepackage\\(?:\\[\\([^]]+?\\)\\]\\){polyglossia}\n" header)))
+		  "\\\\usepackage\\(?:\\[\\([^]]+?\\)\\]\\){polyglossia}\n"
+		  header)))
 	header
       (let* ((options (org-string-nw-p (match-string 1 header)))
-	     (languages (when options
-			  (save-match-data
-			    ;; Reverse as the last loaded language is
-			    ;; the main language.
-			    (reverse
-			     (delete-dups
-			      (org-split-string
-			       (replace-regexp-in-string
-				"AUTO" language options t)
-			       ",[ \t]*"))))))
-	     (main-language-set-p
+	     (languages (and options
+			     ;; Reverse as the last loaded language is
+			     ;; the main language.
+			     (nreverse
+			      (delete-dups
+			       (save-match-data
+				 (org-split-string
+				  (replace-regexp-in-string
+				   "AUTO" language options t)
+				  ",[ \t]*"))))))
+	     (main-language-set
 	      (string-match-p "\\\\setmainlanguage{.*?}" header)))
 	(replace-match
 	 (concat "\\usepackage{polyglossia}\n"
-		 (loop for l in languages concat
-		       (let ((lang (or (assoc l org-latex-polyglossia-language-alist)
-				       l)))
-			 (format (if main-language-set-p
-				     "\\setotherlanguage%s{%s}\n"
-				   (progn (setq main-language-set-p t)
-					  "\\setmainlanguage%s{%s}\n"))
-				 (if (and (listp lang) (eq 3 (length lang)))
-				     (format "[variant=%s]" (nth 2 lang))
-				   "")
-				 (nth 1 lang)))))
+		 (mapconcat
+		  (lambda (l)
+		    (let ((l (or (assoc l org-latex-polyglossia-language-alist)
+				 l)))
+		      (format (if main-language-set "\\setotherlanguage%s{%s}\n"
+				(setq main-language-set t)
+				"\\setmainlanguage%s{%s}\n")
+			      (if (and (consp l) (= (length l) 3))
+				  (format "[variant=%s]" (nth 2 l))
+				"")
+			      (nth 1 l))))
+		  languages
+		  ""))
 	 t t header 0)))))
 
 (defun org-latex--find-verb-separator (s)