aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/extmark.h
blob: 0b4d84110bb2255b0216ab6a696f26e0f2a6d1f2 (plain) (blame)
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
#pragma once

#include <stdbool.h>
#include <stdint.h>  // IWYU pragma: keep

#include "nvim/api/keysets_defs.h"  // IWYU pragma: keep
#include "nvim/api/private/defs.h"  // IWYU pragma: keep
#include "nvim/buffer_defs.h"
#include "nvim/decoration_defs.h"  // IWYU pragma: keep
#include "nvim/macros_defs.h"
#include "nvim/map_defs.h"
#include "nvim/types_defs.h"

EXTERN Map(String, int) namespace_ids INIT( = MAP_INIT);
/// Non-global namespaces. A locally-scoped namespace may be "orphaned" if all
/// window(s) it was scoped to, are destroyed. Such orphans are tracked here to
/// avoid being mistaken as "global scope".
EXTERN Set(uint32_t) namespace_localscope INIT( = SET_INIT);
EXTERN handle_T next_namespace_id INIT( = 1);

/// Returns true if the namespace is global or scoped in the given window.
static inline bool ns_in_win(uint32_t ns_id, win_T *wp)
{
  if (!set_has(uint32_t, &namespace_localscope, ns_id)) {
    return true;
  }

  return set_has(uint32_t, &wp->w_ns_set, ns_id);
}

#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "api/extmark.h.generated.h"
#endif