housekeeping - clipurr multiline gets displayed as ... more ... in menu, but selecting it pulls full text
This commit is contained in:
parent
6f06d9de1c
commit
6d9f5a8da3
1 changed files with 41 additions and 2 deletions
|
@ -2,7 +2,7 @@ import ../../globurrl
|
||||||
import std/[strutils,os,db_sqlite,osproc]
|
import std/[strutils,os,db_sqlite,osproc]
|
||||||
|
|
||||||
const CLIP_DB = WM_TOOLS_DIR & "clipurr_cache.sqlite"
|
const CLIP_DB = WM_TOOLS_DIR & "clipurr_cache.sqlite"
|
||||||
const KEEP_ITEMS = 20
|
const KEEP_ITEMS = 15
|
||||||
|
|
||||||
proc openDBConn(): DBConn
|
proc openDBConn(): DBConn
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@ proc runDaemon() =
|
||||||
else:
|
else:
|
||||||
var run = true
|
var run = true
|
||||||
while run:
|
while run:
|
||||||
|
# TODO;
|
||||||
|
# Check if WM is running otherwise the TTY will be spammed with "Using Clipnotify" text
|
||||||
echo "Using Clipnotify"
|
echo "Using Clipnotify"
|
||||||
let outp = execCmdEx("clipnotify")
|
let outp = execCmdEx("clipnotify")
|
||||||
if outp.exitcode == 0:
|
if outp.exitcode == 0:
|
||||||
|
@ -67,13 +69,19 @@ proc escapeClip(str: string): string =
|
||||||
var clip = str
|
var clip = str
|
||||||
clip = clip.replace("`","\\`")
|
clip = clip.replace("`","\\`")
|
||||||
clip = clip.replace("\\n`","\\\\n`")
|
clip = clip.replace("\\n`","\\\\n`")
|
||||||
|
clip = clip.replace("\x0A","\\x0A")
|
||||||
clip = escape(clip)
|
clip = escape(clip)
|
||||||
|
echo "CLIP : ", clip
|
||||||
return strip(clip)
|
return strip(clip)
|
||||||
|
|
||||||
proc unescapeClip(str: string): string =
|
proc unescapeClip(str: string): string =
|
||||||
var clip = str
|
var clip = str
|
||||||
try:
|
try:
|
||||||
clip = unescape(clip)
|
clip = unescape(clip)
|
||||||
|
if contains(clip,"\\x0A"):
|
||||||
|
echo "NEWLINE FOUND"
|
||||||
|
let idx = find(clip, "\\x0A") - 1
|
||||||
|
clip = clip[0 .. idx] & " ... more ..."
|
||||||
except:
|
except:
|
||||||
echo getCurrentExceptionMsg()
|
echo getCurrentExceptionMsg()
|
||||||
|
|
||||||
|
@ -113,11 +121,42 @@ proc addClip(str: var string) =
|
||||||
echo getCurrentExceptionMsg()
|
echo getCurrentExceptionMsg()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
proc getFullClipboardContent(str: string): string =
|
||||||
|
var full = ""
|
||||||
|
try:
|
||||||
|
let db = openDBConn()
|
||||||
|
defer: db.close()
|
||||||
|
let text = "\"" & replace(str," ... more ...", "%") & "\""
|
||||||
|
let stmt = """
|
||||||
|
select clip
|
||||||
|
from clip_items
|
||||||
|
where clip like ?
|
||||||
|
order by timestamp desc
|
||||||
|
LIMIT 1"""
|
||||||
|
var prep = db.prepare(stmt)
|
||||||
|
prep.bindParams(text)
|
||||||
|
let res = db.getAllRows(prep)
|
||||||
|
for r in res:
|
||||||
|
# may need to switch to a getRow or getValue method here as this is messy
|
||||||
|
full = unescape(r[0])
|
||||||
|
full = replace(full, "\\x0A","\x0A")
|
||||||
|
break
|
||||||
|
finalize(prep)
|
||||||
|
except:
|
||||||
|
echo "Error Reading Clip File : " & getCurrentExceptionMsg()
|
||||||
|
|
||||||
|
|
||||||
|
return full
|
||||||
|
|
||||||
proc showClips() =
|
proc showClips() =
|
||||||
let clips = readClipFile()
|
let clips = readClipFile()
|
||||||
let info = newInfo("Clipurr")
|
let info = newInfo("Clipurr")
|
||||||
let option = outputData(info, clips)
|
let option = outputData(info, clips)
|
||||||
if option != "":
|
if option != "":
|
||||||
|
if contains(option, "... more ..."):
|
||||||
|
let full = getFullClipboardContent(option)
|
||||||
|
copyToClipboard(full)
|
||||||
|
else:
|
||||||
copyToClipboard(option)
|
copyToClipboard(option)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue