ruby_learner 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +58 -0
- data/LICENSE.txt +21 -0
- data/README.md +65 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/new_terminal +25 -0
- data/bin/setup +8 -0
- data/docs/happy_ruby/RussOlsen_EloquentRuby_c1.pdf +0 -0
- data/docs/happy_ruby/RussOlsen_EloquentRuby_c5.pdf +0 -0
- data/docs/happy_ruby/TanoshiiRuby_v3_c23.pdf +0 -0
- data/docs/happy_ruby/TanoshiiRuby_v5_c1.pdf +0 -0
- data/docs/happy_ruby/TanoshiiRuby_v5_c2-3.pdf +0 -0
- data/docs/happy_ruby/c2.ipynb +479 -0
- data/docs/happy_ruby/c3_4.ipynb +237 -0
- data/docs/seminar/8-1.org +18 -0
- data/exe/ruby_learner +5 -0
- data/lib/ruby_learner/h.rb +14 -0
- data/lib/ruby_learner/methods.rb +131 -0
- data/lib/ruby_learner/random_h.rb +16 -0
- data/lib/ruby_learner/ruby_learner.rb +43 -0
- data/lib/ruby_learner/sequential_h.rb +15 -0
- data/lib/ruby_learner/typing_practice.rb +21 -0
- data/lib/ruby_learner/version.rb +3 -0
- data/questions/random_check/.rspec +1 -0
- data/questions/random_check/random_h.rb +16 -0
- data/questions/random_check/section_1/.rspec +1 -0
- data/questions/random_check/section_1/lib/answer.rb +15 -0
- data/questions/random_check/section_1/lib/sentence.org +9 -0
- data/questions/random_check/section_1/lib/workplace.rb +5 -0
- data/questions/random_check/section_1/spec/spec_helper.rb +100 -0
- data/questions/random_check/section_1/spec/workplace_spec.rb +10 -0
- data/questions/random_check/section_2/.rspec +1 -0
- data/questions/random_check/section_2/lib/answer.rb +17 -0
- data/questions/random_check/section_2/lib/sentence.org +12 -0
- data/questions/random_check/section_2/lib/workplace.rb +5 -0
- data/questions/random_check/section_2/spec/.rspec +1 -0
- data/questions/random_check/section_2/spec/spec_helper.rb +100 -0
- data/questions/random_check/section_2/spec/workplace_spec.rb +11 -0
- data/questions/sequential_check/section_1/part_1/lib/answer.rb +9 -0
- data/questions/sequential_check/section_1/part_1/lib/sentence.org +9 -0
- data/questions/sequential_check/section_1/part_1/lib/workplace.rb +5 -0
- data/questions/sequential_check/section_1/part_1/spec/spec_helper.rb +100 -0
- data/questions/sequential_check/section_1/part_1/spec/workplace_spec.rb +10 -0
- data/questions/sequential_check/section_1/part_2/lib/answer.rb +16 -0
- data/questions/sequential_check/section_1/part_2/lib/sentence.org +12 -0
- data/questions/sequential_check/section_1/part_2/lib/workplace.rb +5 -0
- data/questions/sequential_check/section_1/part_2/spec/.rspec +1 -0
- data/questions/sequential_check/section_1/part_2/spec/spec_helper.rb +100 -0
- data/questions/sequential_check/section_1/part_2/spec/workplace_spec.rb +11 -0
- data/ruby_learner.gemspec +41 -0
- data/takahashi/docs/README.org +139 -0
- data/takahashi/docs/drill.html +875 -0
- data/takahashi/docs/drill.html~ +877 -0
- data/takahashi/docs/drill.org +446 -0
- data/takahashi/docs/ruby_for_beginner.html +2642 -0
- data/takahashi/docs/ruby_for_beginner.org +1430 -0
- data/takahashi/sample_prog/answer/10_1.rb +5 -0
- data/takahashi/sample_prog/answer/11_1.rb +5 -0
- data/takahashi/sample_prog/answer/11_2.rb +4 -0
- data/takahashi/sample_prog/answer/1_1.rb +1 -0
- data/takahashi/sample_prog/answer/1_2.rb +1 -0
- data/takahashi/sample_prog/answer/1_3.rb +1 -0
- data/takahashi/sample_prog/answer/2_1.rb +5 -0
- data/takahashi/sample_prog/answer/2_2.rb +12 -0
- data/takahashi/sample_prog/answer/3_1.rb +10 -0
- data/takahashi/sample_prog/answer/4_1.rb +7 -0
- data/takahashi/sample_prog/answer/5_1.rb +6 -0
- data/takahashi/sample_prog/answer/5_2.rb +3 -0
- data/takahashi/sample_prog/answer/6_1.rb +3 -0
- data/takahashi/sample_prog/answer/6_2.rb +5 -0
- data/takahashi/sample_prog/answer/6_3.rb +5 -0
- data/takahashi/sample_prog/answer/6_4.rb +7 -0
- data/takahashi/sample_prog/answer/7_1.rb +3 -0
- data/takahashi/sample_prog/answer/7_2.rb +8 -0
- data/takahashi/sample_prog/answer/9_1.rb +3 -0
- data/takahashi/sample_prog/answer/9_2.rb +5 -0
- data/takahashi/sample_prog/answer/9_3.rb +10 -0
- data/takahashi/sample_prog/answer/hello.rb +3 -0
- data/workshop/.rspec +1 -0
- data/workshop/emacs.d/ac-comphist.dat +50 -0
- data/workshop/emacs.d/cp5022x.el +156 -0
- data/workshop/emacs.d/elpa/archives/gnu/archive-contents +1240 -0
- data/workshop/emacs.d/elpa/archives/melpa/archive-contents +2 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/auto-complete-autoloads.el +65 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/auto-complete-config.el +551 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/auto-complete-config.elc +0 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/auto-complete-pkg.el +6 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/auto-complete.el +2164 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/auto-complete.elc +0 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/ada-mode +72 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/c++-mode +99 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/c-mode +55 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/caml-mode +231 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/clojure-mode +580 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/clojurescript-mode +475 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/coq-mode +278 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/css-mode +874 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/erlang-mode +216 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/ess-julia-mode +37 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/go-mode +25 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/haskell-mode +679 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/java-mode +53 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/js-mode +148 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/julia-mode +37 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/lua-mode +21 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/nim-mode +70 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/objc-mode +161 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/octave-mode +46 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/php-mode +6144 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/python-mode +379 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/qml-mode +183 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/ruby-mode +181 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/scala-mode +1347 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/scheme-mode +216 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/sclang-mode +1481 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/sh-mode +182 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/swift-mode +87 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/tcl-mode +172 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/ts-mode +797 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/tuareg-mode +231 -0
- data/workshop/emacs.d/elpa/auto-complete-20170124.1845/dict/verilog-mode +313 -0
- data/workshop/emacs.d/elpa/better-defaults-20170613.2104/better-defaults-autoloads.el +16 -0
- data/workshop/emacs.d/elpa/better-defaults-20170613.2104/better-defaults-pkg.el +2 -0
- data/workshop/emacs.d/elpa/better-defaults-20170613.2104/better-defaults.el +90 -0
- data/workshop/emacs.d/elpa/better-defaults-20170613.2104/better-defaults.elc +0 -0
- data/workshop/emacs.d/elpa/haml-mode-20170923.2153/haml-mode-autoloads.el +26 -0
- data/workshop/emacs.d/elpa/haml-mode-20170923.2153/haml-mode-pkg.el +2 -0
- data/workshop/emacs.d/elpa/haml-mode-20170923.2153/haml-mode.el +877 -0
- data/workshop/emacs.d/elpa/haml-mode-20170923.2153/haml-mode.elc +0 -0
- data/workshop/emacs.d/elpa/haml-mode-readme.txt +8 -0
- data/workshop/emacs.d/elpa/material-theme-20171123.1040/material-light-theme.el +918 -0
- data/workshop/emacs.d/elpa/material-theme-20171123.1040/material-light-theme.elc +0 -0
- data/workshop/emacs.d/elpa/material-theme-20171123.1040/material-theme-autoloads.el +32 -0
- data/workshop/emacs.d/elpa/material-theme-20171123.1040/material-theme-pkg.el +8 -0
- data/workshop/emacs.d/elpa/material-theme-20171123.1040/material-theme.el +912 -0
- data/workshop/emacs.d/elpa/material-theme-20171123.1040/material-theme.elc +0 -0
- data/workshop/emacs.d/elpa/ox-bibtex-chinese-readme.txt +21 -0
- data/workshop/emacs.d/elpa/popup-20160709.729/popup-autoloads.el +15 -0
- data/workshop/emacs.d/elpa/popup-20160709.729/popup-pkg.el +2 -0
- data/workshop/emacs.d/elpa/popup-20160709.729/popup.el +1432 -0
- data/workshop/emacs.d/elpa/popup-20160709.729/popup.elc +0 -0
- data/workshop/emacs.d/elpa/yaml-mode-20180212.1556/yaml-mode-autoloads.el +33 -0
- data/workshop/emacs.d/elpa/yaml-mode-20180212.1556/yaml-mode-pkg.el +2 -0
- data/workshop/emacs.d/elpa/yaml-mode-20180212.1556/yaml-mode.el +470 -0
- data/workshop/emacs.d/elpa/yaml-mode-20180212.1556/yaml-mode.elc +0 -0
- data/workshop/emacs.d/elpa/yaml-mode-readme.txt +25 -0
- data/workshop/emacs.d/haml-mode-master/.gitignore +1 -0
- data/workshop/emacs.d/haml-mode-master/.mailmap +2 -0
- data/workshop/emacs.d/haml-mode-master/MIT-LICENSE +20 -0
- data/workshop/emacs.d/haml-mode-master/README.md +47 -0
- data/workshop/emacs.d/haml-mode-master/haml-mode.el +887 -0
- data/workshop/emacs.d/iceberg_theme.el +202 -0
- data/workshop/emacs.d/init-open-recentf.el +133 -0
- data/workshop/emacs.d/init.el +229 -0
- data/workshop/emacs.d/inits/line-num.el +264 -0
- data/workshop/emacs.d/install-elisp.el +366 -0
- data/workshop/emacs.d/markdown-mode/markdown-mode.el +5978 -0
- data/workshop/emacs.d/notes +12 -0
- data/workshop/emacs.d/processing-mode/processing-mode.el +275 -0
- data/workshop/emacs.d/recentf +31 -0
- data/workshop/emacs.d/ruby-mode/inf-ruby.el +416 -0
- data/workshop/emacs.d/ruby-mode/rdoc-mode.el +130 -0
- data/workshop/emacs.d/ruby-mode/ruby-electric.el +205 -0
- data/workshop/emacs.d/ruby-mode/ruby-mode.el +1496 -0
- data/workshop/emacs.d/ruby-mode/ruby-style.el +78 -0
- data/workshop/emacs.d/ruby-mode/rubydb2x.el +104 -0
- data/workshop/emacs.d/ruby-mode/rubydb3x.el +115 -0
- data/workshop/emacs.d/ruby_learner_init.el +244 -0
- data/workshop/emacs.d/themes/dracula-theme.el +431 -0
- data/workshop/emacs.d/themes/iceberg-theme.el +205 -0
- data/workshop/emacs.d/themes/my-misterioso-theme.el +109 -0
- data/workshop/emacs.d/themes/my-wombat-theme.el +121 -0
- data/workshop/emacs.d/wiki-mode/wiki.el +976 -0
- data/workshop/emacs_help.org +34 -0
- data/workshop/lib/answer.rb +1 -0
- data/workshop/lib/sentence.org +1 -0
- data/workshop/lib/workplace.rb +1 -0
- data/workshop/restore/empty.rb +0 -0
- data/workshop/spec/spec_helper.rb +100 -0
- data/workshop/spec/workplace_spec.rb +1 -0
- data/workshop/training_data.txt +3 -0
- metadata +343 -0
@@ -0,0 +1,264 @@
|
|
1
|
+
;;; line-num.el --- Display line numbers in left-margin of buffer.
|
2
|
+
;;
|
3
|
+
;; Filename: line-num.el
|
4
|
+
;; Description: Display line numbers in left-margin of buffer.
|
5
|
+
;; Author: (Darryl Okahata) darrylo@hpsrdmo, Drew Adams
|
6
|
+
;; Maintainer: Drew Adams (concat "drew.adams" "@" "oracle" ".com")
|
7
|
+
;; Copyright (C) 1999-2015, Drew Adams, all rights reserved.
|
8
|
+
;; Copyright (C) 1989, Hewlett-Packard, all rights reserved.
|
9
|
+
;; Created: Wed Mar 31 16:18:24 1999
|
10
|
+
;; Version: 0
|
11
|
+
;; Package-Requires: ()
|
12
|
+
;;; Last-Updated: Thu Jan 1 11:01:00 2015 (-0800)
|
13
|
+
;; By: dradams
|
14
|
+
;; Update #: 219
|
15
|
+
;; URL: http://www.emacswiki.org/line-num.el
|
16
|
+
;; Doc URL: http://emacswiki.org/LineNumbers
|
17
|
+
;; Keywords: local
|
18
|
+
;; Compatibility: GNU Emacs: 20.x, 21.x, 22.x, 23.x, 24.x, 25.x
|
19
|
+
;;
|
20
|
+
;; Features that might be required by this library:
|
21
|
+
;;
|
22
|
+
;; None
|
23
|
+
;;
|
24
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
25
|
+
;;
|
26
|
+
;;; Commentary:
|
27
|
+
;;
|
28
|
+
;; Display line numbers in left-margin of buffer.
|
29
|
+
;;
|
30
|
+
;; New functions defined here:
|
31
|
+
;;
|
32
|
+
;; `display-line-numbers', `toggle-line-numbers-display',
|
33
|
+
;; `turn-on-line-numbers-display', `turn-off-line-numbers-display'.
|
34
|
+
;;
|
35
|
+
;; NOTE: `setnu.el' now provides similar, but generally better,
|
36
|
+
;; functionality.
|
37
|
+
;;
|
38
|
+
;; Original author was Darryl Okahata darrylo@hpsrdmo: The copy on
|
39
|
+
;; which the current (Adams) modifications were made was obtained from
|
40
|
+
;; Rick Kunin (rickk@sperdk).
|
41
|
+
;;
|
42
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
43
|
+
;;
|
44
|
+
;;; Change Log:
|
45
|
+
;;
|
46
|
+
;; 2004/11/26 dadams
|
47
|
+
;; Replaced decf with setq...1+.
|
48
|
+
;; turn-off-line-numbers-display: Error if not displaying line #s.
|
49
|
+
;; Removed calls to `fit-frame' (and require of fit-frame.el).
|
50
|
+
;; 2000/11/01 dadams
|
51
|
+
;; 1. Added: toggle-line-numbers-display, turn-on-line-numbers-display,
|
52
|
+
;; turn-off-line-numbers-display.
|
53
|
+
;; 2. Added global vars: displaying-line-numbers-p,
|
54
|
+
;; display-line-numbers-format-string, display-line-numbers-first-line,
|
55
|
+
;; display-line-numbers-count, display-line-numbers-buffer-name,
|
56
|
+
;; display-line-numbers-modified-p.
|
57
|
+
;; 1999/04/14 dadams
|
58
|
+
;; Commented out assignment to unused free var: insert-end.
|
59
|
+
;;
|
60
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
61
|
+
;;
|
62
|
+
;; This program is free software; you can redistribute it and/or modify
|
63
|
+
;; it under the terms of the GNU General Public License as published by
|
64
|
+
;; the Free Software Foundation; either version 2, or (at your option)
|
65
|
+
;; any later version.
|
66
|
+
|
67
|
+
;; This program is distributed in the hope that it will be useful,
|
68
|
+
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
69
|
+
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
70
|
+
;; GNU General Public License for more details.
|
71
|
+
|
72
|
+
;; You should have received a copy of the GNU General Public License
|
73
|
+
;; along with this program; see the file COPYING. If not, write to
|
74
|
+
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
75
|
+
;; Floor, Boston, MA 02110-1301, USA.
|
76
|
+
;;
|
77
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
78
|
+
;;
|
79
|
+
;;; Code:
|
80
|
+
|
81
|
+
;;>> Problem: Tabs at beginning of lines
|
82
|
+
|
83
|
+
;;;;;;;;;;;;;
|
84
|
+
|
85
|
+
|
86
|
+
;;;###autoload
|
87
|
+
(defun display-line-numbers ()
|
88
|
+
"Temporarily display line numbers in left margin of current buffer."
|
89
|
+
(interactive)
|
90
|
+
(or (eq (current-buffer) (window-buffer (selected-window)))
|
91
|
+
(error "Current buffer, %s, is not the selected window's buffer"
|
92
|
+
(buffer-name)))
|
93
|
+
(let ((buffer-read-only nil)
|
94
|
+
(modified (buffer-modified-p))
|
95
|
+
(name buffer-file-name)
|
96
|
+
(point (point-marker))
|
97
|
+
format-string
|
98
|
+
line-number
|
99
|
+
(count 0)
|
100
|
+
nlines
|
101
|
+
first-line)
|
102
|
+
(save-restriction
|
103
|
+
(widen)
|
104
|
+
(save-excursion
|
105
|
+
(setq first-line (window-start (selected-window)))
|
106
|
+
(goto-char first-line)
|
107
|
+
(setq line-number (1+ (count-lines (point-min) (point))))
|
108
|
+
(move-to-window-line -1)
|
109
|
+
(beginning-of-line)
|
110
|
+
(setq nlines (count-lines first-line (point)))
|
111
|
+
(let ((max (+ line-number nlines)))
|
112
|
+
(setq format-string (cond ((< max 100) "%2d ")
|
113
|
+
((< max 1000) "%3d ")
|
114
|
+
((< max 10000) "%4d ")
|
115
|
+
(t "%7d "))))))
|
116
|
+
(save-excursion
|
117
|
+
(unwind-protect
|
118
|
+
(progn
|
119
|
+
(goto-char first-line)
|
120
|
+
;; defeat file locking... don't try this at home, kids!
|
121
|
+
(setq buffer-file-name nil)
|
122
|
+
(while (<= count nlines)
|
123
|
+
(insert-before-markers (format format-string line-number))
|
124
|
+
;;;(setq insert-end (point)) THIS VAR IS FREE - AND UNUSED!
|
125
|
+
(setq line-number (1+ line-number))
|
126
|
+
(setq count (1+ count))
|
127
|
+
(forward-line 1))
|
128
|
+
(set-window-start (selected-window) first-line)
|
129
|
+
(goto-char point)
|
130
|
+
(set-buffer-modified-p modified)
|
131
|
+
(message "<<< Press SPACE to continue >>>")
|
132
|
+
(let ((char (read-char)))
|
133
|
+
(or (eql char ?\ )
|
134
|
+
(setq unread-command-events (list char))))
|
135
|
+
)
|
136
|
+
(goto-char first-line)
|
137
|
+
(let ((n (1+ (- (aref format-string 1) ?0))))
|
138
|
+
(while (> count 0)
|
139
|
+
(setq count (1- count))
|
140
|
+
(delete-char n)
|
141
|
+
(forward-line 1)))
|
142
|
+
(setq buffer-file-name name)
|
143
|
+
(set-buffer-modified-p modified)))))
|
144
|
+
|
145
|
+
;;;-----------------------------------------------------------------
|
146
|
+
|
147
|
+
(defvar displaying-line-numbers-p nil)
|
148
|
+
(make-variable-buffer-local 'displaying-line-numbers-p)
|
149
|
+
(defvar display-line-numbers-format-string nil)
|
150
|
+
(make-variable-buffer-local 'display-line-numbers-format-string)
|
151
|
+
(defvar display-line-numbers-first-line nil)
|
152
|
+
(make-variable-buffer-local 'display-line-numbers-first-line)
|
153
|
+
(defvar display-line-numbers-count 0)
|
154
|
+
(make-variable-buffer-local 'display-line-numbers-count)
|
155
|
+
(defvar display-line-numbers-buffer-name nil)
|
156
|
+
(make-variable-buffer-local 'display-line-numbers-buffer-name)
|
157
|
+
(defvar display-line-numbers-modified-p nil)
|
158
|
+
(make-variable-buffer-local 'display-line-numbers-modified-p)
|
159
|
+
|
160
|
+
;;;###autoload
|
161
|
+
(defun toggle-line-numbers-display (arg)
|
162
|
+
"Display/clear line numbers in left margin of current buffer.
|
163
|
+
With prefix ARG, just number lines in current window, not all lines in
|
164
|
+
buffer."
|
165
|
+
(interactive "P")
|
166
|
+
(if displaying-line-numbers-p
|
167
|
+
(turn-off-line-numbers-display)
|
168
|
+
(turn-on-line-numbers-display arg)))
|
169
|
+
|
170
|
+
;;;###autoload
|
171
|
+
(defun turn-on-line-numbers-display (arg)
|
172
|
+
"Display line numbers in left margin of current buffer.
|
173
|
+
With prefix ARG, just number lines in current window, not all lines in
|
174
|
+
buffer."
|
175
|
+
(interactive "P")
|
176
|
+
(or (eq (current-buffer) (window-buffer (selected-window)))
|
177
|
+
(error "Current buffer, %s, is not the selected window's buffer"
|
178
|
+
(buffer-name)))
|
179
|
+
(let ((buffer-read-only nil)
|
180
|
+
(point (point-marker))
|
181
|
+
line-number
|
182
|
+
nlines)
|
183
|
+
(setq display-line-numbers-buffer-name buffer-file-name)
|
184
|
+
(setq display-line-numbers-modified-p (buffer-modified-p))
|
185
|
+
(save-restriction
|
186
|
+
(widen)
|
187
|
+
(save-excursion
|
188
|
+
(setq display-line-numbers-first-line
|
189
|
+
(if arg
|
190
|
+
(window-start (selected-window))
|
191
|
+
(point-min)))
|
192
|
+
(goto-char display-line-numbers-first-line)
|
193
|
+
(setq line-number (1+ (count-lines (point-min) (point))))
|
194
|
+
(if arg
|
195
|
+
(move-to-window-line -1)
|
196
|
+
(goto-char (point-max)))
|
197
|
+
(beginning-of-line)
|
198
|
+
(setq nlines (count-lines display-line-numbers-first-line (point)))
|
199
|
+
(let ((max (+ line-number nlines)))
|
200
|
+
(setq display-line-numbers-format-string (cond ((< max 100) "%2d ")
|
201
|
+
((< max 1000) "%3d ")
|
202
|
+
((< max 10000) "%4d ")
|
203
|
+
(t "%7d "))))))
|
204
|
+
(save-excursion
|
205
|
+
(condition-case nil
|
206
|
+
(progn
|
207
|
+
(goto-char display-line-numbers-first-line)
|
208
|
+
(setq buffer-file-name nil) ; To prevent saving with line numbers etc.
|
209
|
+
(setq displaying-line-numbers-p t)
|
210
|
+
(while (<= display-line-numbers-count nlines)
|
211
|
+
(insert-before-markers
|
212
|
+
(format display-line-numbers-format-string line-number))
|
213
|
+
(setq line-number (1+ line-number))
|
214
|
+
(setq display-line-numbers-count (1+ display-line-numbers-count))
|
215
|
+
(forward-line 1))
|
216
|
+
(when arg
|
217
|
+
(set-window-start (selected-window) display-line-numbers-first-line))
|
218
|
+
(goto-char point)
|
219
|
+
(set-buffer-modified-p display-line-numbers-modified-p))
|
220
|
+
(error
|
221
|
+
(progn
|
222
|
+
(goto-char display-line-numbers-first-line)
|
223
|
+
(let ((n (1+ (- (aref display-line-numbers-format-string 1) ?0))))
|
224
|
+
(while (> display-line-numbers-count 0)
|
225
|
+
(setq display-line-numbers-count (1- display-line-numbers-count))
|
226
|
+
(delete-char n)
|
227
|
+
(forward-line 1)))
|
228
|
+
(setq buffer-file-name display-line-numbers-buffer-name)
|
229
|
+
(set-buffer-modified-p display-line-numbers-modified-p)
|
230
|
+
(setq displaying-line-numbers-p nil))))))
|
231
|
+
(let ((curr-line (count-lines (window-start) (point))))
|
232
|
+
(when (> curr-line 0) (setq curr-line (1+ curr-line)))
|
233
|
+
(recenter curr-line)))
|
234
|
+
|
235
|
+
;;;###autoload
|
236
|
+
(defun turn-off-line-numbers-display ()
|
237
|
+
"Clear displayed line numbers from left margin of current buffer."
|
238
|
+
(interactive)
|
239
|
+
(unless (eq (current-buffer) (window-buffer (selected-window)))
|
240
|
+
(error "Current buffer, `%s', is not the selected window's buffer"
|
241
|
+
(buffer-name)))
|
242
|
+
(unless displaying-line-numbers-p
|
243
|
+
(error "Not displaying line numbers in buffer `%s'" (buffer-name)))
|
244
|
+
(let ((buffer-read-only nil))
|
245
|
+
(save-excursion
|
246
|
+
(when (boundp 'display-line-numbers-buffer-name)
|
247
|
+
(setq buffer-file-name display-line-numbers-buffer-name))
|
248
|
+
(goto-char display-line-numbers-first-line)
|
249
|
+
(let ((n (1+ (- (aref display-line-numbers-format-string 1) ?0))))
|
250
|
+
(while (> display-line-numbers-count 0)
|
251
|
+
(setq display-line-numbers-count (1- display-line-numbers-count))
|
252
|
+
(delete-char n)
|
253
|
+
(forward-line 1)))
|
254
|
+
(when (boundp 'display-line-numbers-modified-p)
|
255
|
+
(set-buffer-modified-p display-line-numbers-modified-p))
|
256
|
+
(setq displaying-line-numbers-p nil))))
|
257
|
+
|
258
|
+
|
259
|
+
;;;;;;;;;;;;;;;;;;;;;;;
|
260
|
+
|
261
|
+
(provide 'line-num)
|
262
|
+
|
263
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
264
|
+
;;; line-num.el ends here
|
@@ -0,0 +1,366 @@
|
|
1
|
+
;;; install-elisp.el --- Simple Emacs Lisp installer
|
2
|
+
;; $Id: install-elisp.el,v 1.18 2009/01/25 17:47:20 rubikitch Exp $
|
3
|
+
|
4
|
+
;; Copyright (C) 2007 rubikitch
|
5
|
+
|
6
|
+
;; Author: rubikitch <rubikitch@ruby-lang.org>
|
7
|
+
;; Keywords: lisp, convenience, maint
|
8
|
+
;; URL: http://www.emacswiki.org/cgi-bin/wiki/download/install-elisp.el
|
9
|
+
|
10
|
+
;; This file is free software; you can redistribute it and/or modify
|
11
|
+
;; it under the terms of the GNU General Public License as published by
|
12
|
+
;; the Free Software Foundation; either version 2, or (at your option)
|
13
|
+
;; any later version.
|
14
|
+
|
15
|
+
;; This file is distributed in the hope that it will be useful,
|
16
|
+
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18
|
+
;; GNU General Public License for more details.
|
19
|
+
|
20
|
+
;; You should have received a copy of the GNU General Public License
|
21
|
+
;; along with GNU Emacs; see the file COPYING. If not, write to
|
22
|
+
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
23
|
+
;; Boston, MA 02110-1301, USA.
|
24
|
+
|
25
|
+
;;; Commentary:
|
26
|
+
|
27
|
+
;; Automate Emacs Lisp installation.
|
28
|
+
;; (1) download Emacs Lisp
|
29
|
+
;; (!) confirm installation
|
30
|
+
;; (2) save to your repository
|
31
|
+
;; (3) byte compile
|
32
|
+
;; (4) load
|
33
|
+
;; (5) show Emacs Lisp
|
34
|
+
|
35
|
+
;;; Commands:
|
36
|
+
;;
|
37
|
+
;; Below are complete command list:
|
38
|
+
;;
|
39
|
+
;; `install-elisp'
|
40
|
+
;; Retrieve Emacs Lisp program from URL and save and byte-compile and load.
|
41
|
+
;; `install-elisp-from-emacswiki'
|
42
|
+
;; Install Emacs Lisp program from the EmacsWiki.
|
43
|
+
;; `install-elisp-from-gist'
|
44
|
+
;; Install Emacs Lisp program from gist.
|
45
|
+
;; `dired-install-elisp-from-emacswiki'
|
46
|
+
;; Upgrade the current Emacs Lisp program from the EmacsWiki.
|
47
|
+
;; `install-elisp-confirmation-minor-mode'
|
48
|
+
;; Emacs Lisp install confirmation.
|
49
|
+
;;
|
50
|
+
;;; Customizable Options:
|
51
|
+
;;
|
52
|
+
;; Below are customizable option list:
|
53
|
+
;;
|
54
|
+
;; `install-elisp-repository-directory'
|
55
|
+
;; Directory to save Emacs Lisp programs downloaded by install-elisp.el.
|
56
|
+
;; default = "~/.emacs.d/"
|
57
|
+
;; `install-elisp-use-view-mode'
|
58
|
+
;; If non-nil, turn on `view-mode' for installed Emacs Lisp program.
|
59
|
+
;; default = t
|
60
|
+
;; `install-elisp-use-url-retrieve'
|
61
|
+
;; If nil, use external command-line HTTP client instead.
|
62
|
+
;; default = (fboundp (quote url-retrieve-synchronously))
|
63
|
+
;; `install-elisp-confirm-flag'
|
64
|
+
;; If non-nil, do install confirmation.
|
65
|
+
;; default = t
|
66
|
+
;; `install-elisp-retrieval-program'
|
67
|
+
;; URL retrieving program used when `install-elisp-use-url-retrieve' is nil.
|
68
|
+
;; default = "wget -q -O- '%s'"
|
69
|
+
|
70
|
+
;;; Installation:
|
71
|
+
|
72
|
+
;; If you use Emacs21 and under, you must have wget or other
|
73
|
+
;; command-line HTTP client.
|
74
|
+
|
75
|
+
;; You need to add to .emacs:
|
76
|
+
;; (require 'install-elisp)
|
77
|
+
;; (setq install-elisp-repository-directory "~/.emacs.d/")
|
78
|
+
|
79
|
+
;;; Usage:
|
80
|
+
|
81
|
+
;; M-x install-elisp
|
82
|
+
;; M-x install-elisp-from-emacswiki
|
83
|
+
;; M-x install-elisp-from-gist
|
84
|
+
;; M-x dired-install-elisp-from-emacswiki
|
85
|
+
;;
|
86
|
+
;; It is convenient to add to your Emacs Lisp programs:
|
87
|
+
;; (install-elisp "http://your.site/hogehoge.el")
|
88
|
+
;; because users have only to evaluate this sexp by C-x C-e.
|
89
|
+
|
90
|
+
;; If you want to complete EmacsWiki pagename, eval:
|
91
|
+
;; (install-elisp "http://www.emacswiki.org/cgi-bin/wiki/download/oddmuse.el")
|
92
|
+
;; It is very convenient to access EmacsWiki with oddmuse.el.
|
93
|
+
|
94
|
+
;;; Upgrade this program:
|
95
|
+
|
96
|
+
;; Simply eval:
|
97
|
+
;; (install-elisp-from-emacswiki "install-elisp.el")
|
98
|
+
|
99
|
+
;;; Related project:
|
100
|
+
|
101
|
+
;; Emacs Lisp Package Archive: http://tromey.com/elpa/
|
102
|
+
;; auto-install.el is successor of this:
|
103
|
+
;; http://www.emacswiki.org/cgi-bin/wiki/download/auto-install.el
|
104
|
+
|
105
|
+
;;; Bug Report:
|
106
|
+
;;
|
107
|
+
;; If you have problem, send a bug report via M-x install-elisp-send-bug-report.
|
108
|
+
;; The step is:
|
109
|
+
;; 0) Setup mail in Emacs, the easiest way is:
|
110
|
+
;; (setq user-mail-address "your@mail.address")
|
111
|
+
;; (setq user-full-name "Your Full Name")
|
112
|
+
;; (setq smtpmail-smtp-server "your.smtp.server.jp")
|
113
|
+
;; (setq mail-user-agent 'message-user-agent)
|
114
|
+
;; (setq message-send-mail-function 'message-smtpmail-send-it)
|
115
|
+
;; 1) Be sure to use the LATEST version of install-elisp.el.
|
116
|
+
;; 2) Enable debugger. M-x toggle-debug-on-error or (setq debug-on-error t)
|
117
|
+
;; 3) Use Lisp version instead of compiled one: (load "install-elisp.el")
|
118
|
+
;; 4) Do it!
|
119
|
+
;; 5) If you got an error, please do not close *Backtrace* buffer.
|
120
|
+
;; 6) M-x install-elisp-send-bug-report and M-x insert-buffer *Backtrace*
|
121
|
+
;; 7) Describe the bug using a precise recipe.
|
122
|
+
;; 8) Type C-c C-c to send.
|
123
|
+
;; # If you are a Japanese, please write in Japanese:-)
|
124
|
+
|
125
|
+
;;; History:
|
126
|
+
|
127
|
+
;; $Log: install-elisp.el,v $
|
128
|
+
;; Revision 1.18 2009/01/25 17:47:20 rubikitch
|
129
|
+
;; New command: `install-elisp-from-gist'
|
130
|
+
;;
|
131
|
+
;; Revision 1.17 2009/01/24 18:54:54 rubikitch
|
132
|
+
;; Fixed unbound `find-function-source-path'.
|
133
|
+
;;
|
134
|
+
;; Revision 1.16 2009/01/21 10:19:57 rubikitch
|
135
|
+
;; Restore `mode-line-format' when installation is done.
|
136
|
+
;;
|
137
|
+
;; Revision 1.15 2008/12/27 10:56:25 rubikitch
|
138
|
+
;; Use font-lock.
|
139
|
+
;;
|
140
|
+
;; Revision 1.14 2008/12/27 10:45:11 rubikitch
|
141
|
+
;; Make install-elisp find the package's directory,
|
142
|
+
;; if found use package's directory, otherwise use `install-elisp-repository-directory'.
|
143
|
+
;; patched by Andy Stewart (with slightly modified), thanks.
|
144
|
+
;;
|
145
|
+
;; Revision 1.13 2008/12/27 09:14:42 rubikitch
|
146
|
+
;; "Get elisp from..." message
|
147
|
+
;;
|
148
|
+
;; Revision 1.12 2007/07/25 20:38:08 rubikitch
|
149
|
+
;; use defgroup.
|
150
|
+
;; install-elisp-retrieval-program: "wget -q -O- '%s'" by default.
|
151
|
+
;;
|
152
|
+
;; Revision 1.11 2007/07/25 19:43:22 rubikitch
|
153
|
+
;; New variable: install-elisp-retrieval-program
|
154
|
+
;;
|
155
|
+
;; use `defcustom'.
|
156
|
+
;;
|
157
|
+
;; Revision 1.10 2007/07/25 19:27:43 rubikitch
|
158
|
+
;; update Commentary and Usage
|
159
|
+
;;
|
160
|
+
;; Revision 1.9 2007/07/25 19:20:08 rubikitch
|
161
|
+
;; install-elisp-confirmation-minor-mode: pretty mode-line-format
|
162
|
+
;;
|
163
|
+
;; Revision 1.8 2007/07/25 19:11:50 rubikitch
|
164
|
+
;; EmacsWiki HTTP workaround
|
165
|
+
;;
|
166
|
+
;; Revision 1.7 2007/07/25 19:02:57 rubikitch
|
167
|
+
;; Install confirmation for security.
|
168
|
+
;;
|
169
|
+
;; Revision 1.6 2007/07/25 17:58:39 rubikitch
|
170
|
+
;; New command: dired-install-elisp-from-emacswiki
|
171
|
+
;;
|
172
|
+
;; Revision 1.5 2007/07/25 17:50:30 rubikitch
|
173
|
+
;; `install-elisp-repository-directory': "~/.emacs.d/" by default.
|
174
|
+
;;
|
175
|
+
;; Revision 1.4 2007/07/25 17:47:21 rubikitch
|
176
|
+
;; rename function: %install-elisp-from -> install-elisp-from
|
177
|
+
;;
|
178
|
+
;; Revision 1.3 2007/07/25 17:46:13 rubikitch
|
179
|
+
;; use `url-retrieve-synchronously' if available
|
180
|
+
;;
|
181
|
+
;; Revision 1.2 2007/07/24 10:44:31 rubikitch
|
182
|
+
;; Fixed a serious bug.
|
183
|
+
;; New variable: install-elisp-use-view-mode
|
184
|
+
;;
|
185
|
+
;; Revision 1.1 2007/07/24 10:39:40 rubikitch
|
186
|
+
;; Initial revision
|
187
|
+
;;
|
188
|
+
|
189
|
+
;;; Code:
|
190
|
+
|
191
|
+
(require 'find-func)
|
192
|
+
|
193
|
+
(defgroup install-elisp nil
|
194
|
+
"Simple Emacs Lisp installer."
|
195
|
+
:group 'hypermedia)
|
196
|
+
|
197
|
+
(defcustom install-elisp-repository-directory "~/.emacs.d/"
|
198
|
+
"Directory to save Emacs Lisp programs downloaded by install-elisp.el. "
|
199
|
+
:group 'install-elisp)
|
200
|
+
|
201
|
+
(defcustom install-elisp-use-view-mode t
|
202
|
+
"If non-nil, turn on `view-mode' for installed Emacs Lisp program."
|
203
|
+
:group 'install-elisp)
|
204
|
+
|
205
|
+
(defcustom install-elisp-use-url-retrieve (fboundp 'url-retrieve-synchronously)
|
206
|
+
"If nil, use external command-line HTTP client instead.
|
207
|
+
See also `install-elisp-retrieval-program'."
|
208
|
+
:group 'install-elisp)
|
209
|
+
|
210
|
+
(defcustom install-elisp-confirm-flag t
|
211
|
+
"If non-nil, do install confirmation.
|
212
|
+
You should set it non-nil for security reason."
|
213
|
+
:group 'install-elisp)
|
214
|
+
|
215
|
+
(defcustom install-elisp-retrieval-program "wget -q -O- '%s'"
|
216
|
+
"URL retrieving program used when `install-elisp-use-url-retrieve' is nil.
|
217
|
+
If you use curl, set it to \"curl --silent '%s'\"."
|
218
|
+
:group 'install-elisp)
|
219
|
+
|
220
|
+
(defvar install-elisp-filename nil)
|
221
|
+
(make-variable-buffer-local 'install-elisp-filename)
|
222
|
+
|
223
|
+
(defvar install-elisp-confirmation-minor-mode-map (make-sparse-keymap))
|
224
|
+
|
225
|
+
(defun %install-elisp-create-buffer (url)
|
226
|
+
(message "Get elisp from %s" url)
|
227
|
+
(cond (install-elisp-use-url-retrieve
|
228
|
+
(switch-to-buffer (url-retrieve-synchronously url))
|
229
|
+
(goto-char (point-min))
|
230
|
+
(re-search-forward "^$" nil 'move)
|
231
|
+
(delete-region (point-min) (1+ (point)))
|
232
|
+
(%install-elisp-emacswiki-http-workaround))
|
233
|
+
(t
|
234
|
+
(let ((buffer (generate-new-buffer " *install-elisp-tmp*")))
|
235
|
+
(shell-command (format install-elisp-retrieval-program url) buffer)
|
236
|
+
(switch-to-buffer buffer))))
|
237
|
+
(emacs-lisp-mode)
|
238
|
+
(setq font-lock-mode t)
|
239
|
+
(font-lock-fontify-buffer))
|
240
|
+
|
241
|
+
;; I do not know why!!
|
242
|
+
(defun %install-elisp-emacswiki-http-workaround ()
|
243
|
+
(save-excursion
|
244
|
+
(let (buffer-read-only)
|
245
|
+
(goto-char (1- (point-max)))
|
246
|
+
(when (eq (char-before) ?\C-m)
|
247
|
+
(delete-backward-char 2)))))
|
248
|
+
|
249
|
+
(defun install-elisp-proceed ()
|
250
|
+
(interactive)
|
251
|
+
(write-file install-elisp-filename)
|
252
|
+
(byte-compile-file buffer-file-name t)
|
253
|
+
(install-elisp-confirmation-minor-mode -1))
|
254
|
+
|
255
|
+
;;;###autoload
|
256
|
+
(defun install-elisp (url &optional filename)
|
257
|
+
"Retrieve Emacs Lisp program from URL and save and byte-compile and load.
|
258
|
+
If optional FILENAME is supplied, save URL as FILENAME, otherwise URL's basename."
|
259
|
+
(interactive "sInstall Emacs Lisp from URL: ")
|
260
|
+
(if (null install-elisp-repository-directory)
|
261
|
+
(with-output-to-temp-buffer "*Help*"
|
262
|
+
(princ "You must prepare to use install-elisp program!
|
263
|
+
Set `install-elisp-repository-directory' to your local Emacs Lisp repository directory in your ~/.emacs.
|
264
|
+
|
265
|
+
For example: (setq install-elisp-repository-directory \"~/emacs/lisp/\")"))
|
266
|
+
(%install-elisp-create-buffer url)
|
267
|
+
(and install-elisp-use-view-mode (view-mode 1))
|
268
|
+
(setq install-elisp-filename
|
269
|
+
(%install-elisp-get-filename (or filename (file-name-nondirectory url))))
|
270
|
+
(if (not install-elisp-confirm-flag)
|
271
|
+
(install-elisp-proceed)
|
272
|
+
(install-elisp-confirmation-minor-mode 1)
|
273
|
+
(message "Type C-c C-c to do installation!"))))
|
274
|
+
|
275
|
+
;; (%install-elisp-find-library-name "vc.el")
|
276
|
+
;; (%install-elisp-find-library-name "vc.elc")
|
277
|
+
(defun %install-elisp-find-library-name (library)
|
278
|
+
"Return the absolute file name of the Lisp source of LIBRARY."
|
279
|
+
;; If the library is byte-compiled, try to find a source library by
|
280
|
+
;; the same name.
|
281
|
+
(if (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library)
|
282
|
+
(setq library (replace-match "" t t library)))
|
283
|
+
(locate-file library
|
284
|
+
(or find-function-source-path load-path)
|
285
|
+
(append (find-library-suffixes) load-file-rep-suffixes)))
|
286
|
+
|
287
|
+
;; (%install-elisp-get-filename "vc.el")
|
288
|
+
;; (%install-elisp-get-filename "vc.elc")
|
289
|
+
;; (%install-elisp-get-filename "icicles.el")
|
290
|
+
;; (%install-elisp-get-filename "hoge.el")
|
291
|
+
(defun %install-elisp-get-filename (filename)
|
292
|
+
(let ((lib-file (%install-elisp-find-library-name filename)))
|
293
|
+
(if (and lib-file (file-writable-p lib-file))
|
294
|
+
;; use current directory,
|
295
|
+
;; if file is not in `install-elisp-repository-directory'.
|
296
|
+
lib-file
|
297
|
+
;; otherwise use `install-elisp-repository-directory'.
|
298
|
+
(expand-file-name filename install-elisp-repository-directory))))
|
299
|
+
|
300
|
+
(defun install-elisp-from (baseurl)
|
301
|
+
"Return higher-order function installing from BASEURL, which accepts an argument FILENAME."
|
302
|
+
`(lambda (filename)
|
303
|
+
(install-elisp (concat ,baseurl filename) filename)))
|
304
|
+
|
305
|
+
;;;###autoload
|
306
|
+
(defun install-elisp-from-emacswiki (filename)
|
307
|
+
"Install Emacs Lisp program from the EmacsWiki."
|
308
|
+
(interactive (list (if (fboundp 'oddmuse-read-pagename)
|
309
|
+
(oddmuse-read-pagename "EmacsWiki")
|
310
|
+
(read-string "PageName: "))))
|
311
|
+
(funcall (install-elisp-from "http://www.emacswiki.org/cgi-bin/wiki/download/") filename))
|
312
|
+
|
313
|
+
;;;###autoload
|
314
|
+
(defun install-elisp-from-gist (gistid &optional filename)
|
315
|
+
"Install Emacs Lisp program from gist."
|
316
|
+
(interactive "sInstall Emacs Lisp from gist ID: ")
|
317
|
+
(install-elisp (concat "http://gist.github.com/" (format "%s" gistid) ".txt")
|
318
|
+
(or filename
|
319
|
+
(format "gist-%s.el" gistid))))
|
320
|
+
|
321
|
+
;;;###autoload
|
322
|
+
(defun dired-install-elisp-from-emacswiki (&optional filename)
|
323
|
+
"Upgrade the current Emacs Lisp program from the EmacsWiki."
|
324
|
+
(interactive (list (dired-get-filename t)))
|
325
|
+
(install-elisp-from-emacswiki filename))
|
326
|
+
|
327
|
+
(define-key install-elisp-confirmation-minor-mode-map "\C-c\C-c" 'install-elisp-proceed)
|
328
|
+
|
329
|
+
(define-minor-mode install-elisp-confirmation-minor-mode
|
330
|
+
"Emacs Lisp install confirmation."
|
331
|
+
nil "" install-elisp-confirmation-minor-mode-map
|
332
|
+
(if install-elisp-confirmation-minor-mode
|
333
|
+
(setq mode-line-format
|
334
|
+
(format "%s: Type C-c C-c to install!"
|
335
|
+
(file-name-nondirectory install-elisp-filename)))
|
336
|
+
(setq mode-line-format default-mode-line-format)))
|
337
|
+
|
338
|
+
;;;; Bug report
|
339
|
+
(defvar install-elisp-maintainer-mail-address
|
340
|
+
(concat "rubiki" "tch@ru" "by-lang.org"))
|
341
|
+
(defvar install-elisp-bug-report-salutation
|
342
|
+
"Describe bug below, using a precise recipe.
|
343
|
+
|
344
|
+
When I executed M-x ...
|
345
|
+
|
346
|
+
How to send a bug report:
|
347
|
+
1) Be sure to use the LATEST version of install-elisp.el.
|
348
|
+
2) Enable debugger. M-x toggle-debug-on-error or (setq debug-on-error t)
|
349
|
+
3) Use Lisp version instead of compiled one: (load \"install-elisp.el\")
|
350
|
+
4) If you got an error, please paste *Backtrace* buffer.
|
351
|
+
5) Type C-c C-c to send.
|
352
|
+
# If you are a Japanese, please write in Japanese:-)")
|
353
|
+
(defun install-elisp-send-bug-report ()
|
354
|
+
(interactive)
|
355
|
+
(reporter-submit-bug-report
|
356
|
+
install-elisp-maintainer-mail-address
|
357
|
+
"install-elisp.el"
|
358
|
+
(apropos-internal "^install-elisp-" 'boundp)
|
359
|
+
nil nil
|
360
|
+
install-elisp-bug-report-salutation))
|
361
|
+
|
362
|
+
(provide 'install-elisp)
|
363
|
+
|
364
|
+
;; How to save (DO NOT REMOVE!!)
|
365
|
+
;; (emacswiki-post "install-elisp.el")
|
366
|
+
;;; install-elisp.el ends here
|