package lsp
LSP protocol implementation in OCaml
Install
Dune Dependency
Authors
Maintainers
Sources
jsonrpc-1.4.1.tbz
sha256=cee8371e7048e24c90e916c373ef6f3aba6f474d8a5fcf507ab6650fd8575eeb
sha512=150ebf71d3484d3beec1a145877cf30d84581bd072dd20159e878ed07cc4fc647b019b98bb0c9fede839b87f7bd13de4a64b534c0760a2ec57d0e4a4deac6f0f
doc/src/lsp.fiber_unix/removable_queue.ml.html
Source file removable_queue.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
open Import type 'a node = { mutable next : 'a node option ; mutable prev : 'a node option ; data : 'a ; mutable queue : 'a t option } and 'a non_empty = { tail : 'a node ; head : 'a node } and 'a queue = | Empty | Non_empty of 'a non_empty and 'a t = 'a queue ref let create () = ref Empty let is_empty t = !t = Empty let push (type a) (t : a t) (a : a) = let node prev = { next = None; prev; data = a; queue = Some t } in match !t with | Empty -> let node = node None in t := Non_empty { tail = node; head = node }; node | Non_empty ne -> let node = node (Some ne.tail) in assert (ne.tail.next = None); ne.tail.next <- Some node; t := Non_empty { ne with tail = node }; node let pop (type a) (t : a t) : a option = match !t with | Empty -> None | Non_empty ne -> let node = ne.head in if Option.is_none node.next then t := Empty else t := Non_empty { ne with head = Option.value_exn node.next }; node.prev <- None; node.next <- None; node.queue <- None; Some node.data let remove node = if Option.is_some node.queue then ( ( match (node.next, node.prev) with | None, None -> Option.value_exn node.queue := Empty | _, _ -> ( ( match node.next with | None -> () | Some next -> next.prev <- node.prev ); match node.prev with | None -> () | Some prev -> prev.next <- node.next ) ); node.prev <- None; node.next <- None; node.queue <- None )
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>