ruby-shell 0.14 → 0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rsh +28 -2
  3. metadata +3 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 749e7195bab599d30f9685f7f6195b0691a68754a82c0d7a0ad2a47449aabb3d
4
- data.tar.gz: 9a0f880c651ee3b53786b76d883a3bb44bdcb7b7260a615c72226eb220f202c1
3
+ metadata.gz: 0cc8a3f3e80656d09aeb3dc8e1d4a803d0cdd4230d2e32036d0de7fb24746b19
4
+ data.tar.gz: b08319ac8b7c86c6ba235a45b03f84727e833477ea4aeb3f26a4422a19032632
5
5
  SHA512:
6
- metadata.gz: 47bd21ba4c0be03d47d51ec094c1ec62f3cac58de19b86d57fc263b23bdd74fe13c352ccd584816e3c8de761a1e402254d6d64d2eb6dd04971b0b8b64ee23f30
7
- data.tar.gz: 3b477ce839dcc6811677265981e635ac37394babe40992e06ba6192b6d776615a3dfe71ad69e006a5bb2b63357d4cdf78c129aff8815f152befafb4ff5a0fcb5
6
+ metadata.gz: 5f9f896f49182e320519dce320605c8c9d1cdde7cbb072379062c148a8764f546673150bb8a7e18bf7fa8d841cffeb7f89966f9500b9c99cdc9b551778dfbba2
7
+ data.tar.gz: 89fde9f621cf09e57dae9a2ce5f1182755769dc2d0ee53a91cec797ee0e1954b107f97d4cf9a879f0df13d27574d6fe19821632bc78de08137ee8f0efbbb9d7b
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.14"
17
+ @version = "0.15"
18
18
 
19
19
  # MODULES, CLASSES AND EXTENSIONS
20
20
  class String # Add coloring to strings (with escaping for Readline)
@@ -246,9 +246,10 @@ def getstr # A custom Readline-like function
246
246
  @stk = 0
247
247
  @pos = 0
248
248
  chr = ""
249
- @history.insert(0, "")
249
+ @history.unshift("")
250
250
  while chr != "ENTER" # Keep going with readline until user presses ENTER
251
251
  @ci = nil
252
+ lift = false
252
253
  right = false
253
254
  @c.clear_line
254
255
  print @prompt
@@ -276,12 +277,23 @@ def getstr # A custom Readline-like function
276
277
  @c.row(1)
277
278
  @c.clear_screen_down
278
279
  when 'UP' # Go up in history
280
+ if lift
281
+ @history.unshift("")
282
+ @history[0] = @history[@stk].dup
283
+ @stk += 1
284
+ end
279
285
  unless @stk >= @history.length - 1
280
286
  @stk += 1
281
287
  @history[0] = @history[@stk].dup
282
288
  @pos = @history[0].length
283
289
  end
290
+ lift = false
284
291
  when 'DOWN' # Go down in history
292
+ if lift
293
+ @history.unshift("")
294
+ @history[0] = @history[@stk].dup
295
+ @stk += 1
296
+ end
285
297
  if @stk == 0
286
298
  @history[0] = ""
287
299
  @pos = 0
@@ -294,8 +306,14 @@ def getstr # A custom Readline-like function
294
306
  @history[0] = @history[@stk].dup
295
307
  @pos = @history[0].length
296
308
  end
309
+ lift = false
297
310
  when 'RIGHT' # Move right on the readline
298
311
  if right
312
+ if lift
313
+ @history.unshift("")
314
+ @history[0] = @history[@stk].dup
315
+ @stk += 1
316
+ end
299
317
  @history[0] = @history[@ci].dup
300
318
  @pos = @history[0].length
301
319
  end
@@ -308,11 +326,13 @@ def getstr # A custom Readline-like function
308
326
  @pos = @history[0].length
309
327
  when 'DEL' # Delete one character
310
328
  @history[0][@pos] = ""
329
+ lift = true
311
330
  when 'BACK' # Delete one character to the left
312
331
  unless @pos <= 0
313
332
  @pos -= 1
314
333
  @history[0][@pos] = ""
315
334
  end
335
+ lift = true
316
336
  when 'WBACK' # Delete one word to the left (Ctrl-W)
317
337
  unless @pos == @pos0
318
338
  until @history[0][@pos - 1] == " " or @pos == 0
@@ -324,6 +344,7 @@ def getstr # A custom Readline-like function
324
344
  @history[0][@pos] = ""
325
345
  end
326
346
  end
347
+ lift = true
327
348
  when 'C-K' # Kill/delete that entry in the history
328
349
  @history.delete_at(@stk)
329
350
  @stk -= 1
@@ -332,13 +353,17 @@ def getstr # A custom Readline-like function
332
353
  when 'LDEL' # Delete readline (Ctrl-U)
333
354
  @history[0] = ""
334
355
  @pos = 0
356
+ lift = true
335
357
  when 'TAB' # Tab completion of dirs and files
336
358
  @tabsearch =~ /^-/ ? tabbing("switch") : tabbing("all")
359
+ lift = true
337
360
  when 'S-TAB'
338
361
  tabbing("hist")
362
+ lift = true
339
363
  when /^.$/
340
364
  @history[0].insert(@pos,chr)
341
365
  @pos += 1
366
+ lift = true
342
367
  end
343
368
  while STDIN.ready?
344
369
  chr = STDIN.getc
@@ -585,6 +610,7 @@ loop do
585
610
  @node = Etc.uname[:nodename] # For use in @prompt
586
611
  h = @history; load(Dir.home+'/.rshrc') if File.exist?(Dir.home+'/.rshrc'); @history = h # reload prompt but not history
587
612
  @prompt.gsub!(/#{Dir.home}/, '~') # Simplify path in prompt
613
+ system("printf \"\033]0;rsh: #{Dir.pwd}\007\"") # Set Window title to path
588
614
  getstr # Main work is here
589
615
  @cmd = @history[0]
590
616
  @dirs.unshift(Dir.pwd)
metadata CHANGED
@@ -1,19 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.14'
4
+ version: '0.15'
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-06 00:00:00.000000000 Z
11
+ date: 2023-06-08 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.14: Reworked readline, quirks fixed. Added shortcuts to latest dir visited (number
16
- & #) - see Readme or Github for explanation'
15
+ 0.15: Better stack handling for history.'
17
16
  email: g@isene.com
18
17
  executables:
19
18
  - rsh