ruby-shell 2.5 → 2.6

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rsh +29 -9
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4cbdfe9d1c09e98287dff7de8cfabb7dd776fa6f7617f4a0801d17f7b463bad
4
- data.tar.gz: cf3b1311d1891caa516b427ef065f79f3d6b23e2486f5d070111f7040a812a05
3
+ metadata.gz: 5c5913a47ce444d23c974bea7579acfa7413ea40c127d8fe4f5fe22ff788b0ba
4
+ data.tar.gz: 9dc3737af78ee22e40f630f69e9ed60942edbd94d5bdbc08515b2e7692529fdd
5
5
  SHA512:
6
- metadata.gz: 673ee174f332d75d8cc0bf5a9570f18d02931e047386e23e727fb6f8ecb16a694095d59d609cc45b7438b49d5b7be4b801465398fe831f84bbc78b38287af69a
7
- data.tar.gz: 35a0eac8a83bbf933deb101fd5e920414c59827dd43292889a300a26d0979cf1de9967acbb78c56ee332da7f605311e57bd7caba799eb82ea15b5dd3160fb3b2
6
+ metadata.gz: ef49ff226a32103a6a345b5087f0b54776efbd02e4c7435dbb3e4ef2aac439c3221c6f8b4b361a7b38fecdc40b9301bdd6a247c7716353e69b8b8dfdf94dc1b0
7
+ data.tar.gz: 519693833b835995ab7cdd9f7c4c089c611646eb46d195a9f5dc7aa4565190c23f3e5303624169336c43711753173b6197db47f32404b02052031ad626778abb
data/bin/rsh CHANGED
@@ -8,7 +8,7 @@
8
8
  # Web_site: http://isene.com/
9
9
  # Github: https://github.com/isene/rsh
10
10
  # License: Public domain
11
- @version = "2.5"
11
+ @version = "2.6"
12
12
 
13
13
  # MODULES, CLASSES AND EXTENSIONS
14
14
  class String # Add coloring to strings (with escaping for Readline)
@@ -42,6 +42,14 @@ module Cursor # Terminal cursor movement ANSI codes (thanks to https://github.co
42
42
  m = res.match /(?<row>\d+);(?<col>\d+)/
43
43
  return m[:row].to_i, m[:col].to_i
44
44
  end
45
+ def rowget
46
+ row, col = self.pos
47
+ return row
48
+ end
49
+ def colget
50
+ row, col = self.pos
51
+ return col
52
+ end
45
53
  def up(n = nil) # Move cursor up by n
46
54
  print(CSI + "#{(n || 1)}A")
47
55
  end
@@ -260,12 +268,16 @@ def getstr # A custom Readline-like function
260
268
  @pos = 0
261
269
  chr = ""
262
270
  @history.unshift("")
271
+ @row0, p = @c.pos
263
272
  while chr != "ENTER" # Keep going with readline until user presses ENTER
264
273
  @ci = nil
265
274
  lift = false
266
275
  right = false
276
+ # The actual printing og the command line
277
+ @c.row(@row0)
267
278
  @c.clear_line
268
279
  print @prompt
280
+ @c.clear_screen_down
269
281
  row, @pos0 = @c.pos
270
282
  #@history[0] = "" if @history[0].nil?
271
283
  print cmd_check(@history[0])
@@ -278,7 +290,15 @@ def getstr # A custom Readline-like function
278
290
  print @ciprompt.c(@c_stamp)
279
291
  right = true
280
292
  end
281
- @c.col(@pos0 + @pos)
293
+ c_col = @pos0 + @pos
294
+ c_row = @row0 + c_col/(@maxcol)
295
+ c_col == 0 ? @c.row(c_row + 1) : @c.row(c_row)
296
+ if c_col.modulo(@maxcol) == 0
297
+ @c.col(c_col)
298
+ @c.row(@c.rowget - 1)
299
+ else
300
+ @c.col(c_col.modulo(@maxcol))
301
+ end
282
302
  chr = getchr
283
303
  case chr
284
304
  when 'C-G', 'C-C'
@@ -311,6 +331,8 @@ def getstr # A custom Readline-like function
311
331
  end
312
332
  lift = false
313
333
  end
334
+ @c.row(@row0)
335
+ @c.clear_screen_down
314
336
  when 'DOWN' # Go down in history
315
337
  if lift
316
338
  @history.unshift("")
@@ -330,6 +352,8 @@ def getstr # A custom Readline-like function
330
352
  @pos = @history[0].length
331
353
  end
332
354
  lift = false
355
+ @c.row(@row0)
356
+ @c.clear_screen_down
333
357
  when 'RIGHT' # Move right on the readline
334
358
  if right
335
359
  if lift
@@ -356,6 +380,7 @@ def getstr # A custom Readline-like function
356
380
  @history[0][@pos] = ""
357
381
  end
358
382
  lift = true
383
+ @c.clear_line_after
359
384
  when 'WBACK' # Delete one word to the left (Ctrl-W)
360
385
  unless @pos == @pos0
361
386
  until @history[0][@pos - 1] == " " or @pos == 0
@@ -368,6 +393,7 @@ def getstr # A custom Readline-like function
368
393
  end
369
394
  end
370
395
  lift = true
396
+ @c.clear_line_after
371
397
  when 'C-Y' # Copy command line to primary selection
372
398
  system("echo -n '#{@history[0]}' | xclip")
373
399
  puts "\n#{Time.now.strftime("%H:%M:%S")}: Copied to primary selection (paste with middle buttoni)".c(@c_stamp)
@@ -406,7 +432,7 @@ def getstr # A custom Readline-like function
406
432
  @pos += 1
407
433
  end
408
434
  end
409
- @c.col(@pos0 + @history[0].length)
435
+ #@c.col(@pos0 + @history[0].length)
410
436
  @c.clear_screen_down
411
437
  end
412
438
  def tab(type)
@@ -545,17 +571,11 @@ def hist_clean # Clean up @history
545
571
  end
546
572
  def cmd_check(str) # Check if each element on the readline matches commands, nicks, paths; color them
547
573
  return if str.nil?
548
- #elements = str.scan(/[^\s']+|'.+?'/)
549
- #elements.map! do |el|
550
- # .... the ifs
551
- #elements.join(" ")
552
574
  str.gsub(/(?:\S'[^']*'|[^ '])+/) do |el|
553
575
  if @exe.include?(el)
554
576
  el.c(@c_cmd)
555
577
  elsif el == "cd"
556
578
  el.c(@c_cmd)
557
- elsif File.executable?(el.gsub("'", ""))
558
- el.c(@c_cmd)
559
579
  elsif File.exist?(el.gsub("'", ""))
560
580
  el.c(@c_path)
561
581
  elsif @nick.include?(el)
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: '2.5'
4
+ version: '2.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-29 00:00:00.000000000 Z
11
+ date: 2024-10-30 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, auto-cd, auto-opening files and more. In
15
15
  continual development. New in 2.0: Full rewrite of tab completion engine. Lots of
16
- other bug fixes. 2.5: Speedup of syntax highlighting and tab completions.'
16
+ other bug fixes. 2.6: Handling line longer than terminal width.'
17
17
  email: g@isene.com
18
18
  executables:
19
19
  - rsh