Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/
coverage/
tmp/
4 changes: 4 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"extends": "hexo",
"root": true
}
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 20
27 changes: 27 additions & 0 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Linter

on: [push, pull_request]

jobs:
linter:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 14.x
uses: actions/setup-node@v2
with:
node-version: '14.x'
- name: Cache NPM dependencies
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.OS }}-npm-cache
restore-keys: |
${{ runner.OS }}-npm-cache
- name: Install Dependencies
run: npm install
- name: Lint
run: |
npm run eslint
env:
CI: true
53 changes: 29 additions & 24 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,54 @@
/* global hexo */

'use strict';
var renderer = require('./lib/renderer');
var assign = require('object-assign');
var read_info = require('./lib/read-info');
var emacs = require('./lib/emacs');

var fs = require('fs');
var path = require('path');
const renderer = require('./lib/renderer');
const assign = require('object-assign');
const read_info = require('./lib/read-info');
const emacs = require('./lib/emacs');

const fs = require('fs');
const path = require('path');

// for detect if we use `hexo s'
var server_mode = false;
var emacs_server_start = false;
let server_mode = false;
let emacs_server_start = false;

// Init option
hexo.config.org = assign({
emacs: 'emacs',
emacsclient: 'emacsclient', // user should not setup this if renderer work correctly
emacsclient: 'emacsclient', // user should not setup this if renderer work correctly
common: '#+OPTIONS: toc:nil num:nil\n#+BIND: org-html-postamble nil',
export_cfg: "(progn (package-initialize)(require 'org) (require 'org-clock) (require 'ox))", // FIXME: why not remove this ?
export_cfg: '(progn (package-initialize)(require \'org) (require \'org-clock) (require \'ox))', // FIXME: why not remove this ?
cachedir: './hexo-org-cache/',
clean_cache: false, // enable this to make 'hexo clean' also clean the cache
clean_cache: false, // enable this to make 'hexo clean' also clean the cache
theme: '',
user_config: '',
htmlize: false,
line_number: false,
daemonize: true, // set false to disable use emacs server
daemonize: true, // set false to disable use emacs server
debug: false
}, hexo.config.org);

hexo.on('ready', function() {
hexo.on('ready', () => {
// detect if current is execute for server, we have different method to handle emacs server exit.
// some people may use 'hexo generate --watch' or 'hexo generate -w', which we also need to keep emacs server exist
server_mode = process.argv.indexOf('server') > 0 || process.argv.indexOf('s') > 0 || process.argv.indexOf('--watch') > 0 || process.argv.indexOf('-w') > 0;

// detect if we are going to clear all cache file (the 'cachedir/emacs.d' will not remove )
if(process.argv.indexOf('clean') > 0 ) {
var dir = hexo.config.org.cachedir;
if (process.argv.indexOf('clean') > 0) {
const dir = hexo.config.org.cachedir;
if (fs.existsSync(dir) && hexo.config.org.clean_cache) {
var files = fs.readdirSync(dir);
files.forEach(function (filename) {
var fullname = path.join(dir, filename);
var stats = fs.statSync(fullname);
if (!stats.isDirectory())
fs.unlink(fullname, (err) => {
const files = fs.readdirSync(dir);
files.forEach(filename => {
const fullname = path.join(dir, filename);
const stats = fs.statSync(fullname);
if (!stats.isDirectory()) {
fs.unlink(fullname, err => {
if (err) throw err;
console.log(fullname + " was deleted");
console.log(fullname + ' was deleted');
});
}
});
}
}
Expand All @@ -64,15 +68,16 @@ hexo.on('ready', function() {
});

// When time to exit hexo, kill emacs process
hexo.on('exit', function(err) {
hexo.on('exit', err => {
// If use `hexo server`, the hexo will first enter `.on(exit)` event then start the server.
// that's why we skip emacs.server.stop() when first etner here with server mode.
if (server_mode) {
server_mode = false;
return;
}
if (emacs_server_start)
if (emacs_server_start) {
emacs.server.stop(hexo);
}
});

hexo.extend.renderer.register('org', 'html', renderer.bind(hexo), false);
Expand Down
Loading