ruby-shell 0.19 → 0.21

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 (5) hide show
  1. checksums.yaml +4 -4
  2. data/.rshrc +9 -4
  3. data/README.md +7 -2
  4. data/bin/rsh +31 -18
  5. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8c4db771e1dbd372496d80bf721a96c79e39ad21406e0cc2f68e3b382dd7df4
4
- data.tar.gz: 7b7c8335bec3b659f7cc82f3f655dd179e053f74a016eed112969a2008cd0ced
3
+ metadata.gz: a8d28ba94f7b6a6e05496bccb94efe444ba34871ab036b448fb0d074dcadf59d
4
+ data.tar.gz: 041e37fe2d4876a59b097d74eddd846be9de62915ee857943c4c86b2e4080a50
5
5
  SHA512:
6
- metadata.gz: 0cfa55a0c59bfa616c725cee507632b85a2676a35cfc14f753bd673124d25bb74848a43ea6ac0cbdc09a8cf2c580f74ff93d0bb50602cfd8e760086365ec1705
7
- data.tar.gz: 70f3584e3bfffe1b09f0bb3cc6bdf0b2aaa5028371d5b11ffae951bb2fd461babf4c989f682e22ccafea24fd9a1957ceaa7f6338b9443fa7baf44c6de46880f2
6
+ metadata.gz: a681b059f27359fa185cc6f1092ac3bf2b8e9084a79ee5650f154b906b25ec84a20eb4920961576a945787cb6d925c6f16cab915383ea9b07ba3a2ed58bc634d
7
+ data.tar.gz: 04bde7676375ce81782b2ba15abda281a650de049d79734eb23b0db4b67987f089db1b2fd4bf3be52bc5dc6730f900d95acc2ade046fe70097272cf09730673e
data/.rshrc CHANGED
@@ -1,10 +1,13 @@
1
1
  # vim: set ft=ruby sw=2 sts=2 et :
2
2
 
3
+ # ENVIRONMENT
4
+ #@lscolors = "/home/geir/.local/share/lscolors.sh"
5
+ ENV["EDITOR"] = "vim"
6
+ ENV["MANPAGER"] = "vim +MANPAGER -"
7
+
3
8
  # PROMPT
4
- # The numbers in parenthesis are 256 color codes (the '.c()' is a String extention
5
- # to color text in the terminal. Add '.b' for bold and '.i' for italics.
6
9
  if @user == "root"
7
- @prompt = "#{@user}@#{@node}".c(160) + ":".c(255) + " #{Dir.pwd}/".c(196) + " ".c(7)
10
+ @prompt = "#{@user}@#{@node}".c(160).b + ":".c(255) + " #{Dir.pwd}/".c(196) + " ".c(7)
8
11
  else
9
12
  @prompt = "#{@user}@#{@node}".c(46) + ":".c(255) + " #{Dir.pwd}/".c(196) + " ".c(7)
10
13
  end
@@ -20,5 +23,7 @@ end
20
23
  @c_taboption = 244 # Color for unselected tabcompleted item
21
24
  @c_stamp = 244 # Color for time stamp/command
22
25
 
23
- # UPDATED ON CTRL-D EXIT
26
+ # NICKS AND HISTORY
24
27
  @nick = {"ls"=>"ls --color -F"}
28
+ @gnick = {}
29
+ @history = []
data/README.md CHANGED
@@ -23,6 +23,7 @@ Or simply `gem install ruby-shell`.
23
23
  * Tab completions for nicks, system commands, command switches and dirs/files
24
24
  * Tab completion presents matches in a list to pick from
25
25
  * When you start to write a command, rsh will suggest the first match in the history and present that in "toned down" letters - press the arrow right key to accept the suggestion.
26
+ * Writing a partial command and pressing `UP` will search history for matches. Go down/up in the list and press `TAB` or `ENTER` to accept or `Ctrl-G` to discard
26
27
  * History with editing, search and repeat a history command (with `!`)
27
28
  * Config file (.rshrc) updates on exit (with Ctrl-d) or not (with Ctrl-c)
28
29
  * Set of simple rsh specific commands like nick, nick?, history and rmhistory
@@ -89,10 +90,14 @@ Variable | Description
89
90
  ## The .rshrc
90
91
  `.rshrc` is the configuration file for rsh and it is located in your home directory. It is created when you first start rsh and you can modify it to suit your needs. A more detailed .rshrc is found in the the [rsh github repo](https://github.com/isene/rsh) - you can drop this into your home dir if you like. Set the basic environment variables like this:
91
92
  ```
92
- @editor = "vim"
93
+ ENV["EDITOR"] = "vim"
94
+ ENV["MANPAGER"] = "vim +MANPAGER -"
95
+ ```
96
+ Also, a special variable for better LS_COLOR setup:
97
+ ```
93
98
  @lscolors = "/home/geir/.local/share/lscolors.sh"
94
99
  ```
95
- The `@editor` sets your editor of choice. The `@lscolors` points to a file that sets your LS_COLORS variable. Use [my extended LS_COLORS setup](https://github.com/isene/LS_COLORS) to make this really fancy.
100
+ Point `@lscolors` to a file that sets your LS_COLORS variable. Use [my extended LS_COLORS setup](https://github.com/isene/LS_COLORS) to make this really fancy.
96
101
 
97
102
  You can add any Ruby code to your .rshrc.
98
103
 
data/bin/rsh CHANGED
@@ -14,7 +14,7 @@
14
14
  # for any damages resulting from its use. Further, I am under no
15
15
  # obligation to maintain or extend this software. It is provided
16
16
  # on an 'as is' basis without any expressed or implied warranty.
17
- @version = "0.19"
17
+ @version = "0.21"
18
18
 
19
19
  # MODULES, CLASSES AND EXTENSIONS
20
20
  class String # Add coloring to strings (with escaping for Readline)
@@ -145,8 +145,10 @@ end
145
145
  * Tab completions for nicks, system commands, command switches and dirs/files
146
146
  * Tab completion presents matches in a list to pick from
147
147
  * When you start to write a command, rsh will suggest the first match in the history and
148
- present that in "toned down" letters - press the arrow right key to accept the suggestion.
149
- * History with editing, search and repeat a history command (with `!`)
148
+ present that in "toned down" letters - press the arrow right key to accept the suggestion
149
+ * Writing a partial command and pressing `UP` will search history for matches.
150
+ Go down/up in the list and press `TAB` or `ENTER` to accept or `Ctrl-G` to discard
151
+ * History with editing, search and repeat a history command (with `!`)
150
152
  * Config file (.rshrc) updates on exit (with Ctrl-d) or not (with Ctrl-c)
151
153
  * Set of simple rsh specific commands like nick, nick?, history and rmhistory
152
154
  * rsh specific commands and full set of Ruby commands available via :<command>
@@ -278,17 +280,22 @@ def getstr # A custom Readline-like function
278
280
  @c.row(1)
279
281
  @c.clear_screen_down
280
282
  when 'UP' # Go up in history
281
- if lift
282
- @history.unshift("")
283
- @history[0] = @history[@stk].dup
284
- @stk += 1
285
- end
286
- unless @stk >= @history.length - 1
287
- @stk += 1
288
- @history[0] = @history[@stk].dup
289
- @pos = @history[0].length
283
+ if @stk == 0 and @history[0].length > 0
284
+ @tabsearch = @history[0]
285
+ tabbing("hist")
286
+ else
287
+ if lift
288
+ @history.unshift("")
289
+ @history[0] = @history[@stk].dup
290
+ @stk += 1
291
+ end
292
+ unless @stk >= @history.length - 1
293
+ @stk += 1
294
+ @history[0] = @history[@stk].dup
295
+ @pos = @history[0].length
296
+ end
297
+ lift = false
290
298
  end
291
- lift = false
292
299
  when 'DOWN' # Go down in history
293
300
  if lift
294
301
  @history.unshift("")
@@ -434,8 +441,11 @@ def tab_hist(str)
434
441
  sel = @history.select {|el| el =~ /#{str}/}
435
442
  sel.delete("")
436
443
  hist = tabselect(sel, true)
437
- @tabsearch = hist if hist
438
- @pos = @tabstr.length + @tabsearch.length if hist
444
+ if hist
445
+ @tabsearch = hist
446
+ @tabstr = ""
447
+ @pos = @tabsearch.length
448
+ end
439
449
  end
440
450
  def tabselect(ary, hist=false) # Let user select from the incoming array
441
451
  ary.uniq!
@@ -599,7 +609,10 @@ begin # Load .rshrc and populate @history
599
609
  trap "SIGINT" do print "\n"; exit end
600
610
  firstrun unless File.exist?(Dir.home+'/.rshrc') # Initial loading - to get history
601
611
  load(Dir.home+'/.rshrc')
602
- ENV["EDITOR"] = @editor
612
+ ENV["SHELL"] = __FILE__
613
+ ENV["TERM"] = "rxvt-unicode-256color"
614
+ ENV["PATH"] ? ENV["PATH"] += ":" : ENV["PATH"] = ""
615
+ ENV["PATH"] += "/home/#{@user}/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
603
616
  if File.exist?(@lscolors)
604
617
  ls = File.read(@lscolors)
605
618
  ls.sub!(/export.*/, '')
@@ -676,7 +689,7 @@ loop do
676
689
  res = `fzf`.chomp
677
690
  Dir.chdir(File.dirname(res))
678
691
  else
679
- if File.exist?(@cmd)
692
+ if File.exist?(@cmd) and not File.executable?(@cmd)
680
693
  if File.read(@cmd).force_encoding("UTF-8").valid_encoding?
681
694
  system("#{ENV['EDITOR']} #{@cmd}") # Try open with user's editor
682
695
  else
@@ -687,7 +700,7 @@ loop do
687
700
  end
688
701
  end
689
702
  elsif system(@cmd) # Try execute the command
690
- else puts "No such command: #{@cmd}"
703
+ else puts "No such command or nick: #{@cmd}"
691
704
  end
692
705
  end
693
706
  end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.19'
4
+ version: '0.21'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-12 00:00:00.000000000 Z
11
+ date: 2023-06-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'A shell written in Ruby with extensive tab completions, aliases/nicks,
14
14
  history, syntax highlighting, theming and more. In continual development. New in
15
- 0.19: Added environment variables to .rshrc (@editor and @lscolors) and prettified
16
- tab completions for command switches/options.'
15
+ 0.20: Better history search - write a partial command and press UP to get matches
16
+ in history.'
17
17
  email: g@isene.com
18
18
  executables:
19
19
  - rsh