my_help 0.8.5 → 1.1a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/'../test'/.my_help/.my_help_conf.yml +2 -0
  3. data/'../test'/.my_help/emacs.org +50 -0
  4. data/{lib/templates → '../test'/.my_help}/org.org +0 -0
  5. data/{lib/templates → '../test'/.my_help}/todo.org +0 -0
  6. data/.gitignore +9 -1
  7. data/.my_help/example2.org +9 -0
  8. data/.rspec +1 -2
  9. data/.rspec_status +13 -0
  10. data/.yardoc/checksums +3 -3
  11. data/.yardoc/object_types +0 -0
  12. data/.yardoc/objects/root.dat +0 -0
  13. data/Gemfile +10 -5
  14. data/Gemfile.lock +63 -56
  15. data/README.org +35 -29
  16. data/Rakefile +25 -14
  17. data/doc/MyHelp/Control.html +443 -221
  18. data/doc/MyHelp.html +7 -7
  19. data/doc/OrgToYaml.html +12 -10
  20. data/doc/_index.html +7 -7
  21. data/doc/class_list.html +2 -2
  22. data/doc/css/style.css +3 -2
  23. data/doc/file.README.html +29 -29
  24. data/doc/file_list.html +2 -2
  25. data/doc/frames.html +2 -2
  26. data/doc/index.html +29 -29
  27. data/doc/js/app.js +14 -3
  28. data/doc/method_list.html +24 -8
  29. data/doc/top-level-namespace.html +6 -6
  30. data/docs/README.html +218 -0
  31. data/docs/README.org +202 -0
  32. data/docs/old_docs/16b_nasu.pdf +0 -0
  33. data/docs/old_docs/17b_oyagi.pdf +0 -0
  34. data/docs/old_docs/19b_okabata.pdf +0 -0
  35. data/docs/old_docs/19b_yamaguchi.pdf +0 -0
  36. data/docs/old_docs/features/delete.feature +7 -0
  37. data/docs/old_docs/features/edit.feature +7 -0
  38. data/docs/old_docs/features/list.feature +6 -0
  39. data/docs/old_docs/features/new.feature +7 -0
  40. data/docs/old_docs/features/step_definitions/delete_spec.rb +12 -0
  41. data/docs/old_docs/features/step_definitions/edit_spec.rb +14 -0
  42. data/docs/old_docs/features/step_definitions/list_spec.rb +10 -0
  43. data/docs/old_docs/features/step_definitions/new_spec.rb +12 -0
  44. data/docs/old_docs/features/support/env.rb +3 -0
  45. data/docs/old_docs/fukumori_symp/18_human_interface_fukumori_workshop.pdf +0 -0
  46. data/docs/old_docs/fukumori_symp/memo_perp_magician.pdf +0 -0
  47. data/docs/old_docs/fukumori_symp//347/237/245/350/255/230/343/201/256/347/233/264/344/272/244/350/243/234/347/251/272/351/226/223.png +0 -0
  48. data/exe/my_help +1 -92
  49. data/lib/my_help/cli.rb +106 -0
  50. data/lib/my_help/config.rb +70 -0
  51. data/lib/my_help/git_cli.rb +40 -0
  52. data/lib/my_help/init.rb +28 -0
  53. data/lib/my_help/list.rb +76 -0
  54. data/lib/my_help/md2hash.rb +54 -0
  55. data/lib/my_help/modify.rb +33 -0
  56. data/lib/my_help/org2hash.rb +45 -0
  57. data/lib/my_help/org2yml.rb +15 -14
  58. data/lib/my_help/version.rb +3 -1
  59. data/lib/my_help.rb +23 -7
  60. data/lib/templates/emacs.org +13 -14
  61. data/lib/templates/example.md +17 -0
  62. data/lib/templates/example.org +9 -0
  63. data/my_help.gemspec +27 -24
  64. data/tmp.txt +14 -0
  65. metadata +52 -26
  66. data/README.html +0 -443
  67. data/README.rdoc +0 -6
  68. data/bin/my_help_thor +0 -66
  69. data/exe/my_help_gli +0 -82
  70. data/lib/my_help/my_help_controll.rb +0 -220
  71. data/lib/my_help/tomo_help_controll.rb +0 -0
  72. data/lib/templates/help_template.org +0 -8
@@ -0,0 +1,106 @@
1
+ module MyHelp
2
+ class CLI < Thor
3
+ include GetConfig
4
+ class_option :help_dir, :type => :string
5
+ # option :help_dir, :type => :string
6
+ # option :layer, :type => :numeric
7
+
8
+ # THOR to SILENCE DEPRECATION
9
+ # https://qiita.com/tbpgr/items/5edb1454634157ff816d
10
+ class << self
11
+ def exit_on_failure?
12
+ true
13
+ end
14
+ end
15
+
16
+ desc "version", "show version"
17
+
18
+ def version
19
+ puts VERSION
20
+ end
21
+
22
+ desc "git [pull|push]", "git operations"
23
+ subcommand "git", Git
24
+
25
+ desc "init", "initialize my_help environment"
26
+
27
+ def init(*args)
28
+ config = get_config # for using methods in Config
29
+ #config.ask_default
30
+ init = Init.new(config)
31
+ raise "Local help dir exist." if init.help_dir_exist?
32
+ puts "Choose default markup '.org' [Y or .md]? "
33
+ response = $stdin.gets.chomp
34
+ config.configure(:ext => response) unless response.upcase[0] == "Y"
35
+ init.mk_help_dir
36
+ config.save_config
37
+ init.cp_templates
38
+ puts "If you want change editor use my_help set editor code."
39
+ end
40
+
41
+ desc "set [:key] [VAL]", "set editor or ext"
42
+
43
+ def set(*args)
44
+ config = get_config # for using methods in Config
45
+ key = args[0] || ""
46
+ config.configure(key.to_sym => args[1])
47
+ config.save_config
48
+ conf_file_path = config[:conf_file]
49
+ puts "conf_file_path: %s" % conf_file_path
50
+ puts File.read(conf_file_path)
51
+ end
52
+
53
+ desc "list [HELP] [ITEM]", "list helps"
54
+ # option :help_dir, :type => :string
55
+ option :layer, :type => :numeric
56
+ # use method_options [[https://github.com/rails/thor/wiki/Method-Options]]
57
+ def list(*args)
58
+ config = get_config
59
+ help_dir = options["help_dir"] || config[:local_help_dir]
60
+ layer = options["layer"] || 1
61
+ puts List.new(help_dir,
62
+ config[:ext],
63
+ layer).list(*args.join(" "))
64
+ end
65
+
66
+ desc "edit [HELP]", "edit help"
67
+
68
+ def edit(*args)
69
+ c = get_config
70
+ help_name = args[0]
71
+ Modify.new(c).edit(help_name)
72
+ end
73
+
74
+ desc "new [HELP]", "mk new HELP"
75
+
76
+ def new(*args)
77
+ c = get_config
78
+ help_name = args[0]
79
+ help_file = File.join(c[:local_help_dir], help_name + c[:ext])
80
+ Modify.new(c).new(help_file)
81
+ # puts res.stdout
82
+ end
83
+
84
+ desc "delete [HELP]", "delete HELP"
85
+
86
+ def delete(*args)
87
+ c = get_config
88
+ help_name = args[0]
89
+ help_file = File.join(c[:local_help_dir], help_name + c[:ext])
90
+ puts "Are you sure to delete #{help_file}? [YN]"
91
+ responce = $stdin.gets.chomp
92
+ if responce.upcase[0] == "Y"
93
+ Modify.new(c).delete(help_file)
94
+ else
95
+ puts "Leave #{help_file} exists."
96
+ end
97
+ end
98
+
99
+ desc "hello", "hello"
100
+
101
+ def hello
102
+ name = $stdin.gets.chomp
103
+ puts("Hello #{name}.")
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,70 @@
1
+ module MyHelp
2
+
3
+ # make @config from default and load yaml
4
+ # as shown
5
+ # https://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gem
6
+ class Config
7
+ attr_reader :valid_config_keys
8
+ # Configuration defaults
9
+ def initialize(conf_path = nil)
10
+ conf_path ||= ENV["HOME"]
11
+ local_help_dir = File.join(conf_path, ".my_help")
12
+ @config = {
13
+ template_dir: File.expand_path("../templates", __dir__),
14
+ local_help_dir: local_help_dir,
15
+ conf_file: File.join(local_help_dir, ".my_help_conf.yml"),
16
+ editor: ENV["EDITOR"] || "emacs",
17
+ ext: ".org",
18
+ verbose: false,
19
+ }
20
+ @valid_config_keys = @config.keys
21
+ configure_with(@config[:conf_file])
22
+ # YAML.dump(@config, File.open(@config[:conf_file], 'w'))
23
+ # no good for multiple testers.
24
+ end
25
+
26
+ # Configure through hash
27
+ def configure(opts = nil)
28
+ return if opts == nil
29
+ opts.each do |k, v|
30
+ if @valid_config_keys.include? k.to_sym
31
+ @config[k.to_sym] = v
32
+ elsif k == "".to_sym
33
+ print "Valid key words are follows:"
34
+ p @valid_config_keys
35
+ else
36
+ raise KeyError.new("Error: keyword '#{k}' is invalid",
37
+ receiver: @config,
38
+ key: k)
39
+ end
40
+ end
41
+ @config
42
+ end
43
+
44
+ # Configure through yaml file
45
+ def configure_with(path)
46
+ begin
47
+ config = YAML.safe_load(IO.read(path),
48
+ permitted_classes: [Symbol])
49
+ rescue Errno::ENOENT => e
50
+ message = "WARNING: #{e.message}.\nUsing default conf."
51
+ $stderr.puts message if @config[:verbose]
52
+ rescue Psych::SyntaxError => e
53
+ message = "WARNING: #{e.message}.\nUsing default conf."
54
+ $stderr.puts message if @config[:verbose]
55
+ end
56
+ configure(config)
57
+ end
58
+
59
+ # save config in @config[:conf_file]
60
+ def save_config()
61
+ File.write(@config[:conf_file], YAML.dump(config))
62
+ end
63
+
64
+ attr_reader :config
65
+
66
+ def [](sym)
67
+ @config[sym]
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,40 @@
1
+ module MyHelp
2
+ module GetConfig
3
+ def get_config #(args)
4
+ parent_help_dir = options["help_dir"] || ""
5
+ parent_help_dir = ENV["HOME"] unless File.exist?(parent_help_dir)
6
+ return Config.new(parent_help_dir)
7
+ end
8
+ end
9
+
10
+ class Git < Thor
11
+ include MyHelp::GetConfig
12
+
13
+ desc "pull", "pull my helps"
14
+
15
+ def pull
16
+ puts "called my_help git pull"
17
+ config = get_config
18
+ help_dir = config[:local_help_dir]
19
+ puts "on the target git directory : %s" % help_dir
20
+ Dir.chdir(help_dir) do
21
+ system "git pull origin main"
22
+ end
23
+ end
24
+
25
+ desc "push", "push my helps"
26
+
27
+ def push
28
+ puts "called my_help git push"
29
+ config = get_config
30
+ help_dir = config[:local_help_dir]
31
+ puts "on the target git directory : %s" % help_dir
32
+ Dir.chdir(help_dir) do
33
+ system "git add -A"
34
+ system "git commit -m 'auto commit from my_help'"
35
+ system "git pull origin main"
36
+ system "git push origin main"
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,28 @@
1
+ module MyHelp
2
+ class Init
3
+ def initialize(config)
4
+ @config = config
5
+ end
6
+
7
+ def help_dir_exist?
8
+ File.exist?(@config[:local_help_dir])
9
+ end
10
+
11
+ def check_conf_exist
12
+ File.exist?(@config[:conf_file])
13
+ end
14
+
15
+ def mk_help_dir
16
+ FileUtils.mkdir(@config[:local_help_dir])
17
+ end
18
+
19
+ def cp_templates
20
+ target_dir = @config[:local_help_dir]
21
+ src_dir = @config[:template_dir]
22
+ ext = @config[:ext]
23
+ Dir.glob(File.join(src_dir, "*#{ext}")).each do |file|
24
+ FileUtils.cp(file, target_dir, verbose: false)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,76 @@
1
+ require_relative "./org2yml"
2
+ #require "colorize"
3
+ require "colorized_string"
4
+
5
+ module MyHelp
6
+ # Your code goes here...
7
+ class List
8
+ def initialize(path = "", ext = ".org", layer = 1)
9
+ @path = path
10
+ @ext = ext
11
+ p @layer = layer
12
+ end
13
+
14
+ def list(help_options = "", level = 0)
15
+ name, item = help_options.split(" ")
16
+ if item == nil && name == nil
17
+ list_helps()
18
+ else
19
+ path = File.exists?(name + @ext) ? name + @ext :
20
+ File.join(@path, name + @ext)
21
+ list_help_with(path, name, item)
22
+ end
23
+ end
24
+
25
+ def read_help(file)
26
+ info = {}
27
+ info[:items] = Org2Hash.new(File.read(file)).contents
28
+ info[:name] = File.basename(file).split(".")[0]
29
+ return info
30
+ end
31
+
32
+ def list_helps()
33
+ files = File.join(@path, "*#{@ext}")
34
+ Dir.glob(files).inject("") do |out, file|
35
+ # p [out, file]
36
+ help_info = read_help(file)
37
+ out << "%10s: %s\n" % [help_info[:name],
38
+ help_info[:items]["head"].split("\n")[0]]
39
+ end
40
+ end
41
+
42
+ # defaultで@path/name.@extのヘルプを読み込んで,itemを表示
43
+ #
44
+ def list_help_with(path, name, item)
45
+ @help_info = read_help(path)
46
+ output = ColorizedString["my_help called with name : #{name}, item : #{item}\n"].colorize(:cyan)
47
+
48
+ if item == nil
49
+ @help_info[:items].each_pair do |item, val|
50
+ item, desc = item.split(":")
51
+ desc ||= ""
52
+ output << "- %20s : %s\n" % [item, desc]
53
+ end
54
+ else
55
+ output << find_near(item)
56
+ end
57
+ return output
58
+ end
59
+
60
+ def find_near(input_item)
61
+ candidates = []
62
+ @help_info[:items].each_pair do |item, val|
63
+ candidates << item if item.include?(input_item)
64
+ end
65
+ if candidates.size == 0
66
+ "Can't find similar item name with : #{input_item}"
67
+ else
68
+ contents = candidates.collect do |near_item|
69
+ ColorizedString["item : #{near_item} \n"].colorize(:cyan) +
70
+ @help_info[:items][near_item]
71
+ end
72
+ contents.join("\n")
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,54 @@
1
+ module MyHelp
2
+ class Md2Hash
3
+ attr_accessor :md_text, :contents, :results, :opts
4
+
5
+ def initialize(md_text = "", **opts)
6
+ @opts = opts
7
+ @md_text = md_text.split("\n")
8
+ @contents = fsm
9
+ #fsm()
10
+ end
11
+
12
+ TRANS = {
13
+ #current
14
+ # new action
15
+ #-----------------------------------
16
+ init: {
17
+ #"*" => [:init, :ignore],
18
+ :default => [:init, :ignore],
19
+ "#" => [:reading, :item],
20
+ },
21
+ reading: {
22
+ "#" => [:reading, :item],
23
+ :default => [:reading, :data],
24
+ },
25
+ }
26
+
27
+ def fsm
28
+ contents = {}
29
+ state = :init
30
+ @results = []
31
+ item = ""
32
+ @md_text.each do |line|
33
+ state, action = TRANS[state][line[0]] || TRANS[state][:default]
34
+
35
+ if line[0..1] == "#+" # line[1] != " "
36
+ state = :init
37
+ action = :ignore
38
+ end
39
+
40
+ results << [line, state, action]
41
+
42
+ case action
43
+ when :ignore
44
+ when :item
45
+ item = line.match(/^# (.+)/)[1]
46
+ contents[item] = []
47
+ when :data
48
+ contents[item] << line
49
+ end
50
+ end
51
+ return contents
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,33 @@
1
+ module MyHelp
2
+ class Modify
3
+ def initialize(conf)
4
+ @conf = conf
5
+ end
6
+
7
+ def new(help_file)
8
+ target = help_file
9
+ source = File.join(@conf[:template_dir], "example.org")
10
+ FileUtils.cp(source, target, verbose: @conf[:verbose])
11
+ end
12
+
13
+ def delete(help_file)
14
+ if File.exist?(help_file)
15
+ FileUtils.rm(help_file, verbose: @conf[:verbose])
16
+ else
17
+ puts "file #{help_file} does not exist."
18
+ end
19
+ end
20
+
21
+ def edit(help_name)
22
+ p help_file = File.join(@conf[:local_help_dir],
23
+ help_name + @conf[:ext])
24
+ if File.exist?(help_file)
25
+ p comm = "#{@conf[:editor]} #{help_file}"
26
+ system(comm)
27
+ else
28
+ puts "file #{help_file} does not exist,"
29
+ puts "make #{help_name} first by 'new' command."
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,45 @@
1
+ module MyHelp
2
+ # get org and trans it to hash by FSM
3
+ class Org2Hash
4
+ attr_accessor :contents, :text
5
+ # current_state => [ new_state, action ]
6
+ TRANSITIONS = {
7
+ :header_read => {
8
+ "* " => [:contents_read, :start_new_item],
9
+ :default => [:header_read, :ignore],
10
+ },
11
+ :contents_read => {
12
+ "* " => [:contents_read, :start_new_item],
13
+ :default => [:contents_read, :add_contents],
14
+ },
15
+ }
16
+
17
+ def initialize(org_text)
18
+ @text = org_text
19
+ @contents = Hash.new
20
+ simple_fsm()
21
+ end
22
+
23
+ def simple_fsm()
24
+ state = :header_read
25
+ item = ""
26
+ @text.split("\n").each do |line|
27
+ next if line.size < 1
28
+ state, action = TRANSITIONS[state][line[0..1]] ||
29
+ TRANSITIONS[state][:default]
30
+ case action
31
+ when :ignore
32
+ when :start_new_item
33
+ item = read_item(line)
34
+ @contents[item] = ""
35
+ when :add_contents
36
+ @contents[item] += line + "\n"
37
+ end
38
+ end
39
+ end
40
+
41
+ def read_item(line)
42
+ line.match(/\* (.+)/)[1]
43
+ end
44
+ end
45
+ end
@@ -1,24 +1,24 @@
1
1
  # -*- coding: utf-8 -*-
2
- require 'yaml'
3
- require 'pp'
2
+ require "yaml"
3
+ require "pp"
4
4
 
5
- class OrgToYaml
5
+ class Org2Yaml
6
6
  attr_accessor :help_cont
7
7
 
8
8
  def initialize(file)
9
9
  @help_cont = {} #{ head: [File.basename(file, '.org')] }
10
10
  @head_sym = nil
11
- @conts = ''
11
+ @conts = ""
12
12
  @short_stored = []
13
13
  org_to_yaml(File.readlines(file))
14
14
  end
15
15
 
16
16
  def make_options(line)
17
- head, desc = line.split(':')
17
+ head, desc = line.split(":")
18
18
  desc ||= head.to_s
19
19
  short = "-#{head[0]}"
20
- if @short_stored.include?(short) or head=='license' or head=='head'
21
- short = ''
20
+ if @short_stored.include?(short) or head == "license" or head == "head"
21
+ short = ""
22
22
  else
23
23
  @short_stored << short
24
24
  end
@@ -27,27 +27,28 @@ class OrgToYaml
27
27
 
28
28
  def next_cont(head)
29
29
  @help_cont[@head_sym][:cont] = @conts if @head_sym
30
- return if head == 'EOF'
31
- @conts = ''
30
+ return if head == "EOF"
31
+ @conts = ""
32
32
  @head_sym = head.to_sym
33
33
  @help_cont[@head_sym] = {
34
- opts: make_options(head), title: head, cont: ''
34
+ opts: make_options(head), title: head, cont: "",
35
35
  }
36
36
  end
37
37
 
38
38
  def org_to_yaml(lines)
39
39
  lines.each do |line|
40
- if m = line.match(/^\* (.+)/)
41
- next_cont m[1]
40
+ m = line.force_encoding(Encoding::UTF_8).match(/^(\*+) (.+)/u)
41
+ if m
42
+ next_cont m[2]
42
43
  else
43
44
  @conts << line
44
45
  end
45
46
  end
46
- next_cont 'EOF'
47
+ next_cont "EOF"
47
48
  end
48
49
  end
49
50
 
50
- if $PROGRAM_NAME == __FILE__
51
+ if $PROGRAM_NAME == __FILE__
51
52
  helps = OrgToYaml.new(ARGV[0])
52
53
  pp helps.help_cont
53
54
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MyHelp
2
- VERSION = "0.8.5"
4
+ VERSION = "1.1a"
3
5
  end
data/lib/my_help.rb CHANGED
@@ -1,7 +1,23 @@
1
- require 'my_help/version.rb'
2
- require 'my_help/my_help_controll'
3
- require 'my_help/tomo_help_controll'
4
- require 'my_help/org2yml'
5
- require 'colorize'
6
- # Add requires for other files you add to your project here, so
7
- # you just need to require this one file in your bin file
1
+ # frozen_string_literal: true
2
+ require "thor"
3
+ require "fileutils"
4
+ require "pp"
5
+ require "yaml"
6
+ require "command_line/global"
7
+
8
+ require_relative "my_help/version"
9
+ require_relative "my_help/list"
10
+ require_relative "my_help/config"
11
+ require_relative "my_help/modify"
12
+ require_relative "my_help/init"
13
+ require_relative "my_help/git_cli"
14
+ require_relative "my_help/cli"
15
+ require_relative "my_help/org2hash"
16
+ require_relative "my_help/md2hash"
17
+
18
+ module MyHelp
19
+ class Error < StandardError; end
20
+
21
+ # Your code goes here...
22
+
23
+ end
@@ -1,33 +1,32 @@
1
- #+STARTUP: indent nolineimages
1
+ #+STARTUP: indent nolineimages overview
2
2
  * head
3
3
  - Emacs key bind
4
- -
5
- special key command
6
- - c-f, While pressing the control key, press 'f'
7
- - M-f, After pressing Esc key, press 'f'
8
- - c-g, Operation interruption
9
- - c-x u, Undo operation(Undo)
4
+ - special key command
5
+ - c-f, While pressing the control key, press 'f'
6
+ - M-f, After pressing Esc key, press 'f'
7
+ - c-g, Operation interruption
8
+ - c-x u, Undo operation(Undo)
10
9
  * license
11
10
  - cc by Natsuko Kawabata, 2017
12
11
 
13
- * move cursor
12
+ * cursor_move
14
13
  - c-f, move Forward, Move to forward or right
15
14
  - c-b, move Backward, Move to back or left
16
15
  - c-a, go Ahead of line, Move to the beginning of the line
17
16
  - c-e, go End of line, Move to the end of the line
18
17
  - c-n, move Next line, Move to next line
19
18
  - c-p, move Previous line, Move to previous line
20
- * move page
19
+ * page_move
21
20
  - c-v, move Vertical, Move to next page
22
21
  - M-v, move reversive Vertical,Move to previous page
23
22
  - c-l, centerise Line, Move to center on current line
24
23
  - M-<, move Top of file, Move to the top of the file
25
24
  - M->, move Bottom of file, Move to the end of the file
26
- * file operation file
25
+ * file_operation
27
26
  - c-x c-f, Find file, Find file
28
27
  - c-x c-s, Save file, Save file
29
28
  - c-x c-w, Write file NAME, Write a file with another name
30
- * edit operation
29
+ * edit_operation
31
30
  - c-d, Delete char, Delete a letter
32
31
  - c-k, Kill line, Delete a line,cut
33
32
  - c-y, Yank, Paste
@@ -36,15 +35,15 @@ special key command
36
35
  - c-s, forward incremental Search WORD, 前へ WORD を検索
37
36
  - c-r, Reverse incremental search WORD, 後へ WORD を検索
38
37
  - M-x query-replace WORD1 <ret> WORD2:対話的置換(y or n で可否選択)
39
- * window operation
38
+ * window_operation
40
39
  - c-x 2, 2 windows, Split into two windows 二つに分割
41
40
  - c-x 1, 1 windows, Integrate in a window
42
41
  - c-x 3, 3rd window sep, Split vertically
43
42
  - c-x o, Other windows, Move to the next window
44
- * buffer operation
43
+ * buffer_operation
45
44
  - すでに open して Emacs にバッファーされた file
46
45
  - c-x b, show Buffer, Buffer list
47
46
  - c-x c-b, next Buffer, Move to next buffer
48
- * quit operation
47
+ * quit_operation
49
48
  - c-x c-c, Quit Emacs, Save file and quit
50
49
  - c-z, suspend Emacs, Pause,restart with fg
@@ -0,0 +1,17 @@
1
+ # head
2
+
3
+ - help_title example
4
+
5
+ # license
6
+
7
+ - cc by Shigeto R. Nishitani, 2016-22
8
+
9
+ # a_item
10
+
11
+ - item_short_description
12
+ - content_a
13
+
14
+ # b_item
15
+
16
+ - b_item
17
+ - content_b
@@ -0,0 +1,9 @@
1
+ #+STARTUP: indent nolineimages overview
2
+ * head
3
+ - help_title example
4
+ * license
5
+ - cc by Shigeto R. Nishitani, 2016-22
6
+ * a_item : item_short_description
7
+ - content_a
8
+ * b_item
9
+ - content_b