my_help 0.8.5 → 1.1a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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