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

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

[elpa] master 601960e: * externals-list: Convert osc to :external


From: Stefan Monnier
Subject: [elpa] master 601960e: * externals-list: Convert osc to :external
Date: Tue, 1 Dec 2020 18:00:21 -0500 (EST)

branch: master
commit 601960e1af1401cc884c6712c9fb887a86f50c9f
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * externals-list: Convert osc to :external
---
 externals-list      | 123 ++++++++++++-------------
 packages/osc/osc.el | 259 ----------------------------------------------------
 2 files changed, 62 insertions(+), 320 deletions(-)

diff --git a/externals-list b/externals-list
index 0eaf583..1b2f788 100644
--- a/externals-list
+++ b/externals-list
@@ -32,21 +32,21 @@
 
 (("ace-window"         :external "https://github.com/abo-abo/ace-window";)
  ("ack"                        :external "https://github.com/leoliu/ack-el";)
- ("ada-mode" :external nil)
+ ("ada-mode"           :external nil)
  ("ada-ref-man"                :external nil)
  ("adaptive-wrap"      :external nil)
- ("adjust-parens" :external nil)
+ ("adjust-parens"      :external nil)
  ("advice-patch"       :external nil)
  ("aggressive-indent"  :external 
"https://github.com/Malabarba/aggressive-indent-mode";)
  ("ahungry-theme"      :external 
"https://github.com/ahungry/color-theme-ahungry";)
- ("all" :external nil)
+ ("all"                        :external nil)
  ("ampc"               :external nil)
  ("arbitools"          :external nil)
  ("ascii-art-to-unicode" :external nil)
  ("async"              :external "https://github.com/jwiegley/emacs-async";)
  ("auctex"             :external "git://git.sv.gnu.org/auctex.git")
  ("aumix-mode"         :external nil)
- ("auto-correct" :external nil)
+ ("auto-correct"       :external nil)
  ("avy"                        :external "https://github.com/abo-abo/avy";)
  ("bbdb"               :external "git://git.savannah.nongnu.org/bbdb.git")
  ("beacon"             :external "https://github.com/Malabarba/beacon";)
@@ -72,25 +72,25 @@
  ;;                               ;; FIXME: elpa.gnu.org doesn't know how to 
build
  ;;                               ;; the .info file from this texi file!
  ;;                               "doc/misc/cc-mode.texi"))
- ("caps-lock" :external nil)
- ("captain" :external nil)
+ ("caps-lock"          :external nil)
+ ("captain"            :external nil)
  ("chess"              :external nil) ;; Was 
https://github.com/jwiegley/emacs-chess.git
- ("cl-generic" :external nil)
- ("cl-lib" :external nil)
+ ("cl-generic"         :external nil)
+ ("cl-lib"             :external nil)
  ("cobol-mode"          :external 
"https://gist.github.com/Edward-H/6768e7dc53ea3dd2adca";)
  ("cl-print"           :core "lisp/emacs-lisp/cl-print.el")
  ("clipboard-collector" :external 
"https://github.com/clemera/clipboard-collector";)
  ("coffee-mode"                :external 
"https://github.com/defunkt/coffee-mode";)
  ("compact-docstrings"  :external 
"https://github.com/cpitclaudel/compact-docstrings";)
  ("company"            :external 
"https://github.com/company-mode/company-mode.git";)
- ("company-ebdb" :external nil)
+ ("company-ebdb"       :external nil)
  ("company-math"       :external "https://github.com/vspinu/company-math.git";)
  ("company-statistics" :external 
"https://github.com/company-mode/company-statistics";)
  ("context-coloring"   :external 
"https://github.com/jacksonrayhamilton/context-coloring.git";)
  ("cpio-mode"          :external "https://github.com/dlewan/cpio-mode";)
- ("crisp" :external nil)
+ ("crisp"              :external nil)
  ("csv-mode"           :external nil)
- ("cycle-quotes" :external nil)
+ ("cycle-quotes"       :external nil)
  ("darkroom"            :external 
"https://github.com/capitaomorte/darkroom.git";)
  ("dash"                :external "https://github.com/magnars/dash.el.git";)
  ("dbus-codegen"       :external "https://github.com/ueno/dbus-codegen-el.git";)
@@ -98,37 +98,37 @@
  ("delight"            :external "https://git.savannah.gnu.org/r/delight.git";)
  ("diffview"            :external 
"https://github.com/mgalgs/diffview-mode.git";)
  ("diff-hl"            :external "https://github.com/dgutov/diff-hl.git";)
- ("dired-du" :external nil)
+ ("dired-du"           :external nil)
  ("dired-git-info"     :external "https://github.com/clemera/dired-git-info";)
  ("disk-usage"         :external 
"https://gitlab.com/ambrevar/emacs-disk-usage";)
  ("dismal"             :external nil)
  ("djvu"               :external nil)
- ("docbook" :external nil)
+ ("docbook"            :external nil)
  ("dts-mode"           :external "https://github.com/bgamari/dts-mode.git";)
  ("easy-kill"          :external "https://github.com/leoliu/easy-kill";)
  ("ebdb"                :external "https://github.com/girzel/ebdb.git";)
- ("ebdb-gnorb" :external nil)
+ ("ebdb-gnorb"         :external nil)
  ("ebdb-i18n-chn"      :external nil)
  ("ediprolog"          :external nil)
  ("eev"                        :external "https://github.com/edrx/eev.git";) 
;branch UTF-8
  ("eglot"               :external "https://github.com/joaotavora/eglot.git";)
- ("el-search" :external nil)
+ ("el-search"          :external nil)
  ("eldoc"              :core "lisp/emacs-lisp/eldoc.el")
  ("eldoc-eval"         :external 
"https://github.com/thierryvolpiatto/eldoc-eval.git";)
- ("electric-spacing" :external nil)
+ ("electric-spacing"   :external nil)
  ("elisp-benchmarks"   :external nil)
  ("emms"               :external "https://git.savannah.gnu.org/git/emms.git";)
  ("enwc"               :external 
"hg::https://hg.savannah.nongnu.org/hgweb/enwc/";)
- ("epoch-view" :external nil)
+ ("epoch-view"         :external nil)
  ("ergoemacs-mode"     :external 
"https://github.com/ergoemacs/ergoemacs-mode.git";)
  ("excorporate"                :external nil)
  ("expand-region"      :external "https://github.com/magnars/expand-region.el";)
  ("exwm"               :external "https://github.com/ch11ng/exwm.git";)
  ("f90-interface-browser" :external "https://github.com/wence-/f90-iface";)
- ("filladapt" :external nil)
- ("flylisp" :external nil)
+ ("filladapt"          :external nil)
+ ("flylisp"            :external nil)
  ("flymake"            :core "lisp/progmodes/flymake.el")
- ("frame-tabs" :external nil)
+ ("frame-tabs"         :external nil)
  ("frog-menu"          :external "https://github.com/clemera/frog-menu";)
  ("fsm"                        :external nil)
  ("gcmh"               :external "https://gitlab.com/koral/gcmh";)
@@ -140,10 +140,10 @@
  ("gnu-elpa"           :external nil)
  ("gnu-elpa-keyring-update" :external nil)
  ("gnugo"              :external nil)
- ("gnus-mock" :external nil)
+ ("gnus-mock"          :external nil)
  ("gpastel"            :external 
"https://gitlab.petton.fr/DamienCassou/gpastel";)
  ("greader"            :external 
"https://gitlab.com/michelangelo-rodriguez/greader";)
- ("greenbar" :external nil)
+ ("greenbar"           :external nil)
  ("guess-language"     :external 
"https://github.com/tmalsburg/guess-language.el";)
  ("highlight-escape-sequences" :external 
"https://github.com/dgutov/highlight-escape-sequences/";)
  ("hook-helpers"       :external 
"https://git.savannah.nongnu.org/git/hook-helpers-el.git";)
@@ -151,20 +151,20 @@
  ("hydra"              :external "https://github.com/abo-abo/hydra";)
  ("hyperbole"           :external 
"http://git.savannah.gnu.org/r/hyperbole.git";)
  ("ioccur"             :external 
"https://github.com/thierryvolpiatto/ioccur.git";)
- ("iterators" :external nil)
+ ("iterators"          :external nil)
  ("ivy-explorer"        :external "https://github.com/clemera/ivy-explorer";)
  ("ivy-posframe"        :external "https://github.com/tumashu/ivy-posframe";)
- ("javaimp" :external nil)
+ ("javaimp"            :external nil)
  ("jgraph-mode"                :external nil)
  ("js2-mode"           :external "https://github.com/mooz/js2-mode.git";)
  ("json-mode"          :external nil)
  ("jsonrpc"            :core "lisp/jsonrpc.el")
- ("jumpc" :external nil)
- ("kmb" :external nil)
- ("landmark" :external nil)
+ ("jumpc"              :external nil)
+ ("kmb"                        :external nil)
+ ("landmark"           :external nil)
  ("leaf"               :external "https://github.com/conao3/leaf.el";)
  ("let-alist"          :core "lisp/emacs-lisp/let-alist.el")
- ("lex" :external nil)
+ ("lex"                        :external nil)
  ("lmc"                        :external nil)
  ("load-dir"           :external nil)
  ("load-relative"      :external "http://github.com/rocky/emacs-load-relative";)
@@ -173,45 +173,46 @@
  ("map"                 :core "lisp/emacs-lisp/map.el")
  ("markchars"          :external nil)
  ("math-symbol-lists"  :external 
"https://github.com/vspinu/math-symbol-lists.git";)
- ("memory-usage" :external nil)
+ ("memory-usage"       :external nil)
  ("metar"              :external nil)
  ("midi-kbd"           :external nil)
  ("mines"              :external "https://github.com/calancha/Minesweeper";)
- ("minibuffer-line" :external nil)
- ("minimap" :external nil)
+ ("minibuffer-line"    :external nil)
+ ("minimap"            :external nil)
  ("mmm-mode"            :external "https://github.com/purcell/mmm-mode.git";)
  ("modus-operandi-theme":external 
"https://gitlab.com/protesilaos/modus-themes";)
  ("modus-vivendi-theme"        :external 
"https://gitlab.com/protesilaos/modus-themes";)
  ("multishell"         :external 
"https://github.com/kenmanheimer/EmacsMultishell";)
  ("muse"               :external "https://github.com/alexott/muse";) ;FIXME: 
Not nearly in-sync
  ("myers"              :external nil)
- ("nadvice" :external nil)
+ ("nadvice"            :external nil)
  ("nameless"           :external "https://github.com/Malabarba/Nameless";)
  ("names"              :external "http://github.com/Malabarba/names";)
  ("nhexl-mode"         :external nil)
  ("nlinum"             :external nil)
- ("notes-mode" :external nil)
+ ("notes-mode"         :external nil)
  ("ntlm"               :core "lisp/net/ntlm.el")
  ("num3-mode"          :external nil)
- ("oauth2" :external nil)
+ ("oauth2"             :external nil)
  ("objed"              :external "https://github.com/clemera/objed";)
  ("omn-mode"            :external nil)
  ("on-screen"           :external 
"https://github.com/michael-heerdegen/on-screen.el.git";)
  ;;FIXME:("org"                :external ??) ;; Need to introduce snapshots!!
- ("org-translate" :external nil)
+ ("org-translate"      :external nil)
  ("orgalist"            :external nil)
  ("org-edna"           :external 
"https://savannah.nongnu.org/projects/org-edna-el";) ;URL?
- ("other-frame-window" :external nil)
+ ("osc" :external nil)
+ ("other-frame-window" :external nil)
  ("paced"              :external 
"bzr::bzr://bzr.savannah.nongnu.org/paced-el/trunk")
  ("pabbrev"             :external "https://github.com/phillord/pabbrev.git";)
- ("package-fixes" :external nil)
+ ("package-fixes"      :external nil)
  ("parsec"              :external 
"https://github.com/cute-jumper/parsec.el.git";)
- ("path-iterator" :external nil)
+ ("path-iterator"      :external nil)
  ("peg"                        :external) ;Was in 
"https://github.com/ellerh/peg.el";
  ("persist"             :external "https://gitlab.com/phillord/persist.git";)
  ("phps-mode"          :external 
"https://github.com/cjohansson/emacs-phps-mode";)
  ("pinentry"           :external "https://github.com/ueno/pinentry-el.git";)
- ("poker" :external nil)
+ ("poker"              :external nil)
  ("posframe"           :external "https://github.com/tumashu/posframe";)
  ("prefixed-core"      :external nil)
  ("project"            :core "lisp/progmodes/project.el")
@@ -223,11 +224,11 @@
  ;;         -- -- pspp-mode.el
  ("pspp-mode"          :external nil) ;; Was 
"https://git.sv.gnu.org/r/pspp.git";
  ("python"             :core "lisp/progmodes/python.el")
- ("quarter-plane" :external nil)
- ("rainbow-mode" :external nil)
+ ("quarter-plane"      :external nil)
+ ("rainbow-mode"       :external nil)
  ("rbit"               :external nil)
  ("rcirc-color"                :external nil)
- ("rcirc-menu" :external nil)
+ ("rcirc-menu"         :external nil)
  ("realgud"             :external "https://github.com/realgud/realgud";)
  ("realgud-ipdb"        :external "https://github.com/realgud/realgud-ipdb";)
  ("realgud-jdb"         :external "https://github.com/realgud/jdb";)
@@ -243,53 +244,53 @@
  ("rt-liberation"      :external "https://git.savannah.nongnu.org/git/rtliber";)
  ("rudel"              :external nil) ;; Was 
bzr::bzr://rudel.bzr.sourceforge.net/bzrroot/rudel/trunk
  ("scanner"            :external "https://gitlab.com/rstocker/scanner.git";)
- ("scroll-restore" :external nil)
- ("sed-mode" :external nil)
- ("seq" :external nil)
- ("shelisp" :external nil)
+ ("scroll-restore"     :external nil)
+ ("sed-mode"           :external nil)
+ ("seq"                        :external nil)
+ ("shelisp"            :external nil)
  ("shell-command+"     :external 
"https://git.sr.ht/~zge/bang/tree/shell-command+";)
- ("shell-quasiquote" :external nil)
+ ("shell-quasiquote"   :external nil)
  ("shen-mode"          :external nil)
  ("sisu-mode"          :external nil)
  ("slime-volleyball"   :external nil)
  ("sm-c-mode"          :external nil)
  ("smalltalk-mode"     :external "git://git.sv.gnu.org/smalltalk")
- ("smart-yank" :external nil)
- ("sml-mode" :external nil)
+ ("smart-yank"         :external nil)
+ ("sml-mode"           :external nil)
  ("so-long"             :core "lisp/so-long.el")
  ("soap-client"                :core ("lisp/net/soap-client.el" 
"lisp/net/soap-inspect.el"))
- ("sokoban" :external nil)
+ ("sokoban"            :external nil)
  ("sotlisp"            :external 
"https://github.com/Malabarba/speed-of-thought-lisp";)
  ("spinner"            :external "https://github.com/Malabarba/spinner.el";)
- ("sql-beeline" :external nil)
+ ("sql-beeline"                :external nil)
  ("sql-indent"          :external 
"https://github.com/alex-hhh/emacs-sql-indent";)
  ("sql-smie"            :external nil)
  ("ssh-deploy"         :external 
"https://github.com/cjohansson/emacs-ssh-deploy";)
- ("stream" :external nil)
+ ("stream"             :external nil)
  ("svg"                        :core ("lisp/svg.el"))
- ("svg-clock" :external nil)
+ ("svg-clock"          :external nil)
  ("swiper"             :external "https://github.com/abo-abo/swiper";)
  ("system-packages"    :external 
"https://gitlab.com/jabranham/system-packages";)
- ("systemd" :external nil)
+ ("systemd"            :external nil)
  ("temp-buffer-browse"  :external 
"https://github.com/leoliu/temp-buffer-browse";)
  ("test-simple"         :external "https://github.com/rocky/emacs-test-simple";)
  ("timerfunctions"     :external nil)
- ("tramp-theme" :external nil)
- ("transcribe" :external nil)
+ ("tramp-theme"                :external nil)
+ ("transcribe"         :external nil)
  ("undo-tree"          :external "http://www.dr-qubit.org/git/undo-tree.git";)
  ("uni-confusables"    :external nil)
- ("uniquify-files" :external nil)
+ ("uniquify-files"     :external nil)
  ("url-http-ntlm"      :external nil)
- ("validate" :external nil)
- ("vcard" :external nil)
+ ("validate"           :external nil)
+ ("vcard"              :external nil)
  ("vdiff"               :external "https://github.com/justbur/emacs-vdiff";)
  ("vcl-mode"           :external "git://git.gnu.org.ua/vcl-mode")
- ("tiny" :external "https://github.com/abo-abo/tiny";)
+ ("tiny"               :external "https://github.com/abo-abo/tiny";)
  ("tramp"              :external 
"https://git.savannah.gnu.org/cgit/tramp.git/?h=elpa";)
  ("transient"          :external "https://github.com/magit/transient";)
  ("vigenere"           :external nil)
  ("visual-filename-abbrev" :external nil)
- ("visual-fill" :external nil)
+ ("visual-fill"                :external nil)
  ("vlf"                        :external "https://github.com/m00natic/vlfi";)
  ("verilog-mode"        :core "lisp/progmodes/verilog-mode.el")
  ("wcheck-mode"                :external 
"https://github.com/tlikonen/wcheck-mode";)
diff --git a/packages/osc/osc.el b/packages/osc/osc.el
deleted file mode 100644
index 28a1a5c..0000000
--- a/packages/osc/osc.el
+++ /dev/null
@@ -1,259 +0,0 @@
-;;; osc.el --- Open Sound Control protocol library  -*- lexical-binding:t -*-
-
-;; Copyright (C) 2014-2020  Free Software Foundation, Inc.
-
-;; Author: Mario Lang <mlang@blind.guru>
-;; Version: 0.2
-;; Keywords: comm, processes, multimedia
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; OpenSound Control ("OSC") is a protocol for communication among
-;; computers, sound synthesizers, and other multimedia devices that is
-;; optimized for modern networking technology and has been used in many
-;; application areas.
-
-;; This package implements low-level functionality for OSC clients and servers.
-;; In particular:
-;; * `osc-make-client' and `osc-make-server' can be used to create process 
objects.
-;; * `osc-send-message' encodes and sends OSC messages from a client process.
-;; * `osc-server-set-handler' can be used to change handlers for particular
-;;   OSC paths on a server process object on the fly.
-
-;; BUGS/TODO:
-;;
-;; * Timetags are not supported yet.
-
-;; Usage:
-;;
-;; Client: (setq my-client (osc-make-client "127.0.0.1" 7770))
-;;         (osc-send-message my-client "/osc/path" 1.5 1.0 5 "done")
-;;         (delete-process my-client)
-;;
-;; Server: (setq my-server (osc-make-server "127.0.0.1" 7770
-;;          (lambda (path &rest args)
-;;            (message "OSC %s: %S" path args))))
-
-;;; Code:
-
-(require 'cl-lib)
-
-(defun osc-string (string)
-  (setq string (encode-coding-string string 'binary))
-  (concat string (make-string (1+ (- 3 (% (length string) 4))) 0)))
-
-(defun osc-blob (vector)
-  (let ((length (length vector)))
-    (concat (osc-int32 length)
-           vector
-           (make-string (% (- 4 (% length 4)) 4) 0))))
-
-(defun osc-float32 (value)
-  (let (s (e 0) f)
-    (cond
-     ((= value 0.0)
-      (setq s (if (< (copysign 1.0 value) 0) 1 0) f 0))
-     ((= value 1.0e+INF)
-      (setq s 0 e 255 f (1- (expt 2 23))))
-     ((= value -1.0e+INF)
-      (setq s 1 e 255 f (1- (expt 2 23))))
-     ((isnan value)
-      (setq s 0 e 255 f 1))
-     (t
-      (setq s (if (>= value 0.0)
-                 (progn (setq f value) 0)
-               (setq f (* -1 value)) 1))
-      (while (>= (* f (expt 2.0 e)) 2.0) (setq e (1- e)))
-      (if (= e 0) (while (< (* f (expt 2.0 e)) 1.0) (setq e (1+ e))))
-      (setq f (round (* (1- (* f (expt 2.0 e))) (expt 2 23)))
-           e (+ (* -1 e) 127))))
-    (unibyte-string (+ (lsh s 7) (lsh (logand e #XFE) -1))
-                   (+ (lsh (logand e #X01) 7) (lsh (logand f #X7F0000) -16))
-                   (lsh (logand f #XFF00) -8)
-                   (logand f #XFF))))
-
-(defun osc-int32 (value)
-  (let (bytes)
-    (dotimes (_ 4)
-      (push (% value 256) bytes)
-      (setq value (/ value 256)))
-    (apply 'unibyte-string bytes)))
-
-;;;###autoload
-(defun osc-make-client (host port)
-  "Create an OSC client process which talks to HOST and PORT."
-  (make-network-process
-   :name "OSCclient"
-   :coding 'binary
-   :host host
-   :service port
-   :type 'datagram))
-
-;;;###autoload
-(defun osc-send-message (client path &rest args)
-  "Send an OSC message from CLIENT to the specified PATH with ARGS."
-  (process-send-string
-   client
-   (apply
-    'concat
-    (osc-string path)
-    (osc-string
-     (apply
-      'concat ","
-      (mapcar (lambda (arg)
-               (cond
-                ((floatp arg) "f")
-                ((integerp arg) "i")
-                ((stringp arg) "s")
-                ((vectorp arg) "b")
-                (t (error "Invalid argument: %S" arg))))
-             args)))
-    (mapcar
-     (lambda (arg)
-       (cond
-       ((floatp arg) (osc-float32 arg))
-       ((integerp arg) (osc-int32 arg))
-       ((stringp arg) (osc-string arg))
-       ((vectorp arg) (osc-blob arg))))
-     args))))
-
-(defun osc-read-string ()
-  (let ((pos (point)) string)
-    (while (not (= (following-char) 0)) (forward-char 1))
-    (setq string (buffer-substring-no-properties pos (point)))
-    (forward-char (- 4 (% (length string) 4)))
-    string))
-
-(defun osc-read-blob ()
-  (let* ((length (osc-read-int32))
-        (pos (point))
-        (vector (progn
-                  (forward-char length)
-                  (string-to-vector (buffer-substring pos (point)))))
-        (padding (% (- 4 (% length 4)) 4)))
-    (forward-char padding)
-    vector))
-
-(defun osc-read-int32 ()
-  (let ((value 0))
-    (dotimes (_ 4)
-      (setq value (logior (* value 256) (following-char)))
-      (forward-char 1))
-    value))
-
-(defun osc-read-float32 ()
-  (let ((s (lsh (logand (following-char) #X80) -7))
-       (e (+ (lsh (logand (following-char) #X7F) 1)
-             (lsh (logand (progn (forward-char) (following-char)) #X80) -7)))
-       (f (+ (lsh (logand (following-char) #X7F) 16)
-             (lsh (progn (forward-char) (following-char)) 8)
-             (prog1 (progn (forward-char) (following-char)) (forward-char)))))
-    (cond
-     ((and (= e 0) (= f 0))
-      (* 0.0 (expt -1 s)))
-     ((and (= e 255) (or (= f (1- (expt 2 23))) (= f 0)))
-      (* 1.0e+INF (expt -1 s)))
-     ((and (= e 255) (not (or (= f 0) (= f (1- (expt 2 23))))))
-      0.0e+NaN)
-     (t
-      (* (expt -1 s)
-        (expt 2.0 (- e 127))
-        (1+ (/ f (expt 2.0 23))))))))
-
-(defun osc-server-set-handler (server path handler)
-  "Set HANDLER for PATH on SERVER.
-IF HANDLER is nil, remove previously defined handler and fallback to
-the generic handler for SERVER."
-  (let* ((handlers (plist-get (process-plist server) :handlers))
-        (slot (assoc-string path handlers)))
-    (if slot
-       (setcdr slot handler)
-      (plist-put
-       (process-plist server)
-       :handlers (nconc (list (cons path handler)) handlers)))))
-
-(defun osc-server-get-handler (server path)
-  (or (cdr (assoc path (plist-get (process-plist server) :handlers)))
-      (plist-get (process-plist server) :generic)))
-
-(defun osc-filter (proc string)
-  (when (= (% (length string) 4) 0)
-    (with-temp-buffer
-      (set-buffer-multibyte nil)
-      (insert string)
-      (goto-char (point-min))
-      (let ((path (osc-read-string)))
-       (if (not (string= path "#bundle"))
-           (when (= (char-after) ?,)
-             (save-excursion
-               (apply (osc-server-get-handler proc path)
-                      path
-                      (mapcar
-                       (lambda (type)
-                         (cl-case type
-                           (?b (osc-read-blob))
-                           (?f (osc-read-float32))
-                           (?i (osc-read-int32))
-                           (?s (osc-read-string))))
-                       (string-to-list (substring (osc-read-string) 1))))))
-         (forward-char 8) ;skip 64-bit timetag
-         (while (not (eobp))
-           (let ((size (osc-read-int32)))
-             (osc-filter proc
-                         (buffer-substring
-                          (point) (progn (forward-char size) (point)))))))))))
-
-;;;###autoload
-(defun osc-make-server (host port default-handler)
-  "Create an OSC server which listens on HOST and PORT.
-DEFAULT-HANDLER is a function with arguments (path &rest args) which is called
-when a new OSC message arrives.  See `osc-server-set-handler' for more
-fine grained control.
-A process object is returned which can be dicarded with `delete-process'."
-  (make-network-process
-   :name "OSCserver"
-   :filter #'osc-filter
-   :host host
-   :service port
-   :server t
-   :type 'datagram
-   :plist (list :generic default-handler)))
-
-(defun osc--test-transport-equality (value)
-  "Test if transporting a certain VALUE via OSC results in equality.
-This is mostly for testing the implementation robustness."
-  (let* ((osc-test-value value)
-        (osc-test-func (cond ((or (floatp value) (integerp value)) '=)
-                             ((stringp value) 'string=)))
-        (osc-test-done nil)
-        (osc-test-ok nil)
-        (server (osc-make-server
-                 "localhost" t
-                 (lambda (_path v)
-                   (setq osc-test-done t
-                         osc-test-ok (list v (funcall osc-test-func
-                                                      osc-test-value v))))))
-        (client (osc-make-client
-                 (nth 0 (process-contact server)) (nth 1 (process-contact 
server)))))
-    (osc-send-message client
-                     "/test" osc-test-value)
-    (while (not osc-test-done)
-      (accept-process-output server 0 500))
-    (delete-process server) (delete-process client)
-    osc-test-ok))
-
-(provide 'osc)
-;;; osc.el ends here



reply via email to

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