0.16.3 • Published 1 year ago

coc-helper v0.16.3

Weekly downloads
1
License
MIT
Repository
github
Last release
1 year ago

coc-helper

Helpers for coc.nvim

Used by

Usage

activateHelper

  • Note: Only some modules need to call activateHelper, as noted in the documentation below.
import { activateHelper } from 'coc-helper';

export async function activate(context: ExtensionContext) {
  await activateHelper(context);
}

Notifier

Combine the notify of coc.nvim

import { Notifier } from 'coc-helper';
import { workspace } from 'coc.nvim';

const { nvim } = workspace;

// create
const callNotifier = Notifier.create(() => {
  nvim.call('func', true);
  nvim.call('func2', true);
});

const callNotifier2 = Notifier.create(() => {
  nvim.call('func3', true);
});

// combine
const callNotifierCombined = callNotifier.concat(callNotifier2);
const callNotifierCombined2 = Notifier.combine([callNotifier, callNotifier2]);

async function fetchNotifier() {
  return callNotifier;
}

// run
await callNotifierCombined.run();
await Notifier.run(fetchNotifier());
await Notifier.runAll([fetchNotifier(), callNotifierCombined]);

// notify
nvim.pauseNotification();
(await fetchNotifier()).notify();
Notifier.notifyAll([callNotifierCombined, callNotifier2]);
callNotifierCombined.notify();
await nvim.resumeNotification();

HelperLogger

Logger with OutputChannel support

import { ExtensionContext } from 'coc.nvim';
import { HelperLogger } from 'coc-helper';
const logger = new HelperLogger('extensionChannelName');

// OutputChannel
const channel = logger.outputChannel;

function activate(context: ExtensionContext) {
  // Change level
  logger.level = isDebug ? 'debug' : 'info';
}

async function stuff() {
  logger.info('info');
  logger.warn('info');
  // Log and print error
  logger.error('error');

  logger.prettyPrint({ token: 'xxx', data: 'foo' });

  const [jobReturn, elapsedMilliseconds] = logger.measureTime(async () => {
    return await asyncJobs();
  });

  await helperLogger.measureTask(async () => {
    await asyncJobs();
  }, 'job name');
}

HelperEventEmitter

Typed events emitter

import { HelperEventEmitter, HelperLogger } from 'coc-helper';
const logger = new HelperLogger('extensionChannelName');

interface Events {
  foo: (foo: number) => void;
  bar: (bar: string) => Promise<void>;
}

const events = new HelperEventEmitter(logger);
events.on('foo', (foo) => {});
events.fire('foo', 1);

WinLayoutFinder

Find the vim window by winlayout()

import { WinLayoutFinder } from 'coc-helper';

const winFinder = WinLayoutFinder.create(tabnr);
const leaf = winFinder.find(winid);
// Parent
const parent = leaf.parent;
// Group type, 'col' or 'row'
const parentType = parent.group.type;
// Siblings
const siblings = parent.group.children;

Jest setup and CI

jest.config.json

const jest = require('./node_modules/coc-helper/jest.config.js');

module.exports = {
  ...jest,
  // your jest configuration in here
  // clearMocks: true,
  // moduleNameMapper: {
  //   ...jest.moduleNameMapper,
  //   '^lodash-es$': 'lodash',
  // },
};

github ci workflows

0.16.3

1 year ago

0.16.0

1 year ago

0.16.1

1 year ago

0.16.2

1 year ago

0.15.0

2 years ago

0.15.1

2 years ago

0.15.2

2 years ago

0.14.0

2 years ago

0.13.0

2 years ago

0.12.1

2 years ago

0.12.0

3 years ago

0.11.0

3 years ago

0.11.1

3 years ago

0.10.1

3 years ago

0.10.0

3 years ago

0.9.5

3 years ago

0.9.4

3 years ago

0.9.3

3 years ago

0.9.2

3 years ago

0.9.1

3 years ago

0.9.0

3 years ago

0.8.4

3 years ago

0.8.1

3 years ago

0.8.3

3 years ago

0.8.2

3 years ago

0.8.0

3 years ago

0.7.4

3 years ago

0.7.3

3 years ago

0.7.2

3 years ago

0.7.1

3 years ago

0.7.0

4 years ago

0.6.2

4 years ago

0.6.1

4 years ago

0.6.0

4 years ago

0.5.3

4 years ago

0.5.2

4 years ago

0.5.1

4 years ago

0.5.0

4 years ago

0.4.2

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.3.0

4 years ago

0.2.0

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago