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

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

[nongnu] elpa/webpaste b9b2ce0 143/298: Added support for languages for


From: ELPA Syncer
Subject: [nongnu] elpa/webpaste b9b2ce0 143/298: Added support for languages for providers that appends language to the URL
Date: Thu, 9 Dec 2021 19:00:02 -0500 (EST)

branch: elpa/webpaste
commit b9b2ce0f72604064d68540b72279d7068a3fb121
Author: Elis Axelsson <elis.axelsson@gmail.com>
Commit: Elis Axelsson <elis.axelsson@gmail.com>

    Added support for languages for providers that appends language to the URL
---
 webpaste.el | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/webpaste.el b/webpaste.el
index e04eae6..9db68d7 100644
--- a/webpaste.el
+++ b/webpaste.el
@@ -81,6 +81,12 @@ if that variable is nil, it will use the list of names from 
‘webpaste-provider
 each run.")
 
 
+(defvar webpaste/provider-separators ()
+  "Variable for storing separators for providers that doesn't post language.
+Some providers accepts a post parameter with which language the code is.  But
+some providers want to append the language to the resulting URL.")
+
+
 (defvar webpaste/provider-lang-alists ()
   "Variable for storing alists with languages for highlighting for providers.
 This list will be populated when you add providers to have the languages
@@ -168,6 +174,7 @@ precalculated, and also available both for pre and post 
request access.")
                                   (post-lang-field-name nil)
                                   (parser 'buffer-string)
                                   (lang-overrides '())
+                                  (lang-uri-separator nil)
                                   (error-lambda 
webpaste/providers-error-lambda)
                                   (post-field-lambda 
webpaste/providers-default-post-field-lambda)
                                   (sync nil))
@@ -200,6 +207,10 @@ Optional params:
                    a mode is set to nil, it will use fundamental-mode's value 
as
                    fallback. Fundamental-mode's value can also be overridden.
 
+:lang-uri-separator   Lang URI separator.  This is used for providers that
+                      appends the language to the end of the resulting URI and
+                      needs a separator between language and link.
+
 :parser            Defines how request.el parses the result. Look up :parser 
for
                    `request'. This defaults to 'buffer-string.
 
@@ -222,6 +233,11 @@ Optional params:
 
 :sync              Set to t to wait until request is done.  Defaults to nil.
                    This should only be used for debugging purposes."
+  ;; If we get a separator sent to the function, append it to the list of
+  ;; separators for later use
+  (when lang-uri-separator
+    (cl-pushnew (cons uri lang-uri-separator) webpaste/provider-separators))
+
   ;; Add pre-calculated list of webpaste lang alists
   (cl-pushnew (cons uri (webpaste/get-lang-alist-with-overrides 
lang-overrides))
               webpaste/provider-lang-alists)
@@ -253,18 +269,24 @@ Optional params:
      ,(webpaste-provider
        :uri "https://ptpb.pw/";
        :post-field "c"
+       :lang-uri-separator "/"
+       :lang-overrides '((emacs-lisp-mode . "elisp"))
        :success-lambda webpaste/providers-success-location-header))
 
     ("ix.io"
      ,(webpaste-provider
        :uri "http://ix.io/";
        :post-field "f:1"
+       :lang-uri-separator "/"
+       :lang-overrides '((emacs-lisp-mode . "elisp"))
        :success-lambda webpaste/providers-success-returned-string))
 
     ("sprunge.us"
      ,(webpaste-provider
        :uri "http://sprunge.us/";
        :post-field "sprunge"
+       :lang-uri-separator "?"
+       :lang-overrides '((emacs-lisp-mode . "elisp"))
        :success-lambda webpaste/providers-success-returned-string))
 
     ("dpaste.com"
@@ -334,6 +356,19 @@ return it to the user."
 (defun webpaste-return-url (returned-url)
   "Return RETURNED-URL to user from the result of the paste service."
 
+  ;; Loop providers separators
+  (dolist (provider-separator webpaste/provider-separators)
+    ;; Match if the separator is for this URI
+    (when (string-match-p (regexp-quote (car provider-separator)) returned-url)
+      ;; Get alist of languages for this provider
+      (let ((provider-lang-alist (cdr (assoc (car provider-separator) 
webpaste/provider-lang-alists))))
+        ;; Get language name from list of languages
+        (let ((language-name (cdr (assoc major-mode provider-lang-alist))))
+          ;; If we get a language name
+          (when language-name
+            ;; Override link with link where we appended the language
+            (setq returned-url (concat returned-url (cdr provider-separator) 
language-name)))))))
+
   ;; Reset tested providers after successful paste
   (setq webpaste/tested-providers nil)
 



reply via email to

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